ASPを解読する.NET 5&MVC 6シリーズチュートリアル(17):MVCのその他の新しい機能
2724 ワード
(GlobalImportグローバルインポート機能)
デフォルトで新しく確立されたMVCプログラムでは、Viewsディレクトリの下に、以前のViewsディレクトリの下のwebと同様の機能を持つ
上記のコードは、
addTagHelper機能については、TagHelperで説明しました
なお、この例では、
IP関連情報の取得
ユーザ訪問者のIPアドレスに関する情報を取得するには、依存注入を利用して
同様に、名前空間
ファイルのアップロード
MVC 6は、ファイルのアップロードにおいて、以下のような新しい改善処理を与えた.
デフォルトで新しく確立された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
の下にあるIHttpResponseFeature
、IHttpClientCertificateFeature
、IWebSocketAcceptContext
、Microsoft.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
}