解讀ASP.NET 5 & MVC6系列(17):MVC中的其他新特性
2015-06-03 09:22 湯姆大叔 閱讀(20313) 評論(22) 收藏 舉報(GlobalImport全局導入功能)
默認新建立的MVC程序中,在Views目錄下,新增加了一個_GlobalImport.cshtml文件和_ViewStart.cshtml平級,該文件的功能類似于之前Views目錄下的web.config文件,之前我們在該文件中經(jīng)常設(shè)置全局導入的命名空間,以避免在每個view文件中重復使用@using xx.xx語句。
默認的示例如下:
@using BookStore
@using Microsoft.Framework.OptionsModel
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
上述代碼表示,引用BookStore和Microsoft.Framework.OptionsModel命名空間,以及Microsoft.AspNet.Mvc.TagHelpers程序集下的所有命名空間。
關(guān)于addTagHelper功能,我們已經(jīng)在TagHelper中講解過了
注意,在本例中,我們只引用了BookStore命名空間,并沒有引用BookStore.Controllers命名空間,所以我們在任何視圖中,都無法訪問HomeController類(也不能以Controllers.HomeController的形式進行訪問),希望微軟以后能加以改進。
獲取IP相關(guān)信息
要獲取用戶訪問者的IP地址相關(guān)信息,可以利用依賴注入,獲取IHttpConnectionFeature的實例,從該實例上可以獲取IP地址的相關(guān)信息,實例如下:
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等接口,獲取相關(guān)的實例,從而使用該實例上的特性,上述接口都在命名空間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,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
}
同步與推薦
本文已同步至目錄索引:解讀ASP.NET 5 & MVC6系列
浙公網(wǎng)安備 33010602011771號