解讀ASP.NET 5 & MVC6系列教程(17):MVC中的其他新特性_自學過程

來源:互聯網
上載者:User

(GlobalImport全域匯入功能)

預設建立立的MVC程式中,在Views目錄下,新增加了一個_GlobalImport.cshtml檔案和_ViewStart.cshtml平級,該檔案的功能類似於之前Views目錄下的web.config檔案,之前我們在該檔案中經常設定全域匯入的命名空間,以避免在每個view檔案中重複使用@using xx.xx語句。
預設的樣本如下:

@using BookStore@using Microsoft.Framework.OptionsModel@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"

上述代碼錶示,引用BookStoreMicrosoft.Framework.OptionsModel命名空間,以及Microsoft.AspNet.Mvc.TagHelpers程式集下的所有命名空間。

關於addTagHelper功能,我們已經在TagHelper中講解過了

注意,在本例中,我們只引用了BookStore命名空間,並沒有引用BookStore.Controllers命名空間,所以我們在任何視圖中,都無法訪問HomeController類(也不能以Controllers.HomeController的形式進行訪問),希望微軟以後能加以改進。

擷取IP相關資訊

要擷取使用者訪問者的IP地址相關資訊,可以利用依賴注入,擷取IHttpConnectionFeature的執行個體,從該執行個體上可以擷取IP地址的相關資訊,執行個體如下:

var connection1 = Request.HttpContext.GetFeature<IHttpConnectionFeature>();var connection2 = Context.GetFeature<IHttpConnectionFeature>();var isLocal = connection1.IsLocal;         //是否本地IP var localIpAddress = connection1.LocalIpAddress;  //本地IP地址var localPort = connection1.LocalPort;       //本地IP連接埠var remoteIpAddress = connection1.RemoteIpAddress; //遠程IP地址var remotePort = connection1.RemotePort;      //本地IP連接埠

類似地,你也可以通過IHttpRequestFeatureIHttpResponseFeatureIHttpClientCertificateFeatureIWebSocketAcceptContext等介面,擷取相關的執行個體,從而使用該執行個體上的特性,上述介面都在命名空間Microsoft.AspNet.HttpFeature的下面。

檔案上傳

MVC6在檔案上傳方面,給了新的改進處理,舉例如下:

<form method="post" enctype="multipart/form-data">  <input type="file" name="files" id="files" multiple /><input type="submit" value="submit" /></form>

我們在前端頁面定義上述上傳表單,在接收可以使用MVC6中的新檔案類型IFormFile,執行個體如下:

[HttpPost]public async Task<IActionResult> Index(IList<IFormFile> files){  foreach (var file in files)  {    var fileName = ContentDispositionHeaderValue      .Parse(file.ContentDisposition)      .FileName      .Trim('"');// beta3版本的bug,FileName返回的字串包含雙引號,如"fileName.ext"    if (fileName.EndsWith(".txt"))// 只儲存txt檔案    {      var filePath = _hostingEnvironment.ApplicationBasePath + "\\wwwroot\\"+ fileName;      await file.SaveAsAsync(filePath);    }  }  return RedirectToAction("Index");// PRG}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.