欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年06月24日 15:22:46   作者:湯姆大叔  
這篇文章主要介紹了ASP.NET 5中全局導(dǎo)入、獲取IP相關(guān)信息、文件上傳等其他新特性,需要的朋友可以參考下

(GlobalImport全局導(dǎo)入功能)

默認(rèn)新建立的MVC程序中,在Views目錄下,新增加了一個(gè)_GlobalImport.cshtml文件和_ViewStart.cshtml平級,該文件的功能類似于之前Views目錄下的web.config文件,之前我們在該文件中經(jīng)常設(shè)置全局導(dǎo)入的命名空間,以避免在每個(gè)view文件中重復(fù)使用@using xx.xx語句。
默認(rèn)的示例如下:

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

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

關(guān)于addTagHelper功能,我們已經(jīng)在TagHelper中講解過了

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

獲取IP相關(guān)信息

要獲取用戶訪問者的IP地址相關(guān)信息,可以利用依賴注入,獲取IHttpConnectionFeature的實(shí)例,從該實(shí)例上可以獲取IP地址的相關(guān)信息,實(shí)例如下:

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; //遠(yuǎn)程IP地址
var remotePort = connection1.RemotePort;      //本地IP端口

類似地,你也可以通過IHttpRequestFeatureIHttpResponseFeature、IHttpClientCertificateFeature、 IWebSocketAcceptContext等接口,獲取相關(guān)的實(shí)例,從而使用該實(shí)例上的特性,上述接口都在命名空間Microsoft.AspNet.HttpFeature的下面。

文件上傳

MVC6在文件上傳方面,給了新的改進(jìn)處理,舉例如下:

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

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

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

相關(guān)文章

最新評論