ASPを解読する.NET 5&MVC 6シリーズチュートリアル(17):MVCのその他の新しい機能

2724 ワード

(GlobalImportグローバルインポート機能)
デフォルトで新しく確立されたMVCプログラムでは、Viewsディレクトリの下に、以前のViewsディレクトリの下のwebと同様の機能を持つ_GlobalImport.cshtmlファイルと_ViewStart.cshtml平レベルが新たに追加された.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();
var connection2 = Context.GetFeature();

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の下にあるIHttpResponseFeatureIHttpClientCertificateFeatureIWebSocketAcceptContextMicrosoft.AspNet.HttpFeatureなどのインタフェースを介して、関連するインスタンスを取得することもできます.
ファイルのアップロード
MVC 6は、ファイルのアップロードにおいて、以下のような新しい改善処理を与えた.

フロントエンドページで上記のアップロードフォームを定義し、MVC 6で使用可能な新しいファイルタイプIFormFileを受信します.例は以下の通りです.

[HttpPost]
public async Task Index(IList 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
}