解讀ASP.NET 5 & MVC6系列(17):MVC中的其餘新特性

(GlobalImport全局導入功能)

默認新創建的MVC程序中,在Views目錄下,新增長了一個_GlobalImport.cshtml文件和_ViewStart.cshtml平級,該文件的功能相似於以前Views目錄下的web.config文件,以前咱們在該文件中常常設置全局導入的命名空間,以免在每一個view文件中重複使用@using xx.xx語句。
默認的示例以下:html

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

上述代碼表示,引用BookStoreMicrosoft.Framework.OptionsModel命名空間,以及Microsoft.AspNet.Mvc.TagHelpers程序集下的全部命名空間。前端

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

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

獲取IP相關信息

要獲取用戶訪問者的IP地址相關信息,能夠利用依賴注入,獲取IHttpConnectionFeature的實例,從該實例上能夠獲取IP地址的相關信息,實例以下:post

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的下面。code

文件上傳

MVC6在文件上傳方面,給了新的改進處理,舉例以下:orm

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

咱們在前端頁面定義上述上傳表單,在接收可使用MVC6中的新文件類型IFormFile,實例以下:htm

[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
}

同步與推薦

本文已同步至目錄索引:解讀ASP.NET 5 & MVC6系列blog

相關文章
相關標籤/搜索