(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"
上述代碼錶示,引用BookStore和Microsoft.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連接埠
類似地,你也可以通過IHttpRequestFeature、IHttpResponseFeature、IHttpClientCertificateFeature、 IWebSocketAcceptContext等介面,擷取相關的執行個體,從而使用該執行個體上的特性,上述介面都在命名空間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}