天天看點

Mvc連接配接API +Linq查詢+如何跨域

一、MVC+EF

不管是MVC 還是EF 都有檔案夾 Controllers 下邊的檔案必須以Controller 結尾

WEBAPI 接口不要使用中文名稱

二、Linq 查詢

  1.簡單的linq查詢文法

var list = from a in db.Students
                       select new ViewModel
                       {
                           Sid = a.Sid,
                           Age = a.Age,
                           Sname = a.Sname
                       };      

  2.多表聯查

var list = from a in db.Students
                       join b in db.NClasss on a.Nid equals b.Nid
                       select new ViewModel
                       {
                           Nid = b.Nid,
                           NName = b.NName,
                           Sid = a.Sid,
                           Age = a.Age,
                           Sname = a.Sname
                       };      

三、MVC通路API

    首先必須跨域

    如何跨域?

    一、先将跨域請求複制到API項目中的web.cofig中的<system.webServer>方法中

    

<!--跨域請求:三個配置資訊-->
    <httpProtocol>
      <customHeaders>
        <!--響應類型 (值為逗号分隔的一個字元串,表明伺服器支援的所有跨域請求的方法)-->
        <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS"/>
        <!--響應頭設定(Content-Type:隻限于三個值application/x-www-form-urlencoded、multipart/form-data、text/plain)-->
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
        <!--如果設定 Access-Control-Allow-Origin:*,則允許所有域名的腳本通路該資源-->
        <add name="Access-Control-Allow-Origin" value="*" />
        <!--<add name="Access-Control-Allow-Origin" value="http://domain1.com, http://domain2.com" />  設定允許跨域通路的網址-->
      </customHeaders>
    </httpProtocol>      

    二、将跨域設定方法複制到API項目中的Global.asax的方法下

/// <summary>
        /// 跨域設定
        /// </summary>
        protected void Application_BeginRequest()
        {
            //OPTIONS請求方法的主要作用:
            //1、擷取伺服器支援的HTTP請求方法;也是黑客經常使用的方法。
            //2、用來檢查伺服器的性能。如:AJAX進行跨域請求時的預檢,需要向另外一個域名的資源發送一個HTTP OPTIONS請求頭,用以判斷實際發送的請求是否安全。
            if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
            {
                //表示對輸出的内容進行緩沖,執行page.Response.Flush()時,會等所有内容緩沖完畢,将内容發送到用戶端。
                //這樣就不會出錯,造成頁面卡死狀态,讓使用者無限制的等下去
                Response.Flush();
            }
        }      

繼續閱讀