ASP.NET Core MVC - ビューを相対パスで指定する
ASP.NET Core MVCではビュー名を指定してビューを探すと思いますが、ビュー名だけでなくて相対パスも指定できますよというメモ。
相対パスは~
か/
ではじまる文字列です。
Controller.Viewメソッドの引数viewName
ViewResultを生成するメソッドですね。このメソッドの引数viewNameに相対パスを指定できます。
// サンプルコントローラ public class SampleController : Controller { public IActionResult Index() { // 引数に相対パスを指定できる return View("~/Views/Sample/Index.cshtml"); } }
部分ビューのタグヘルパーPartialTagHelperのname属性
PartialTagHelperはASP.NET Core 2.1で追加されました。部分ビューをレンダリングするタグヘルパーです。
name属性に相対パスを指定できます。
@* name属性に相対パスを指定できる *@ <partial name="~/Views/Sample/_Partial.cshtml" />
ViewComponent.Viewメソッドの引数viewName
ViewViewComponentResultを生成するメソッドの引数viewNameも相対パスを指定できます。
// サンプルビューコンポーネント public class SampleViewComponent : ViewComponent { private Task ActionAsync() => Task.CompletedTask; public async Task<IViewComponentResult> InvokeAsync() { // なにかの処理 await ActionAsync(); // 引数に相対パスを指定できる return View("~/Views/Components/Sample/Default.cshtml"); } }
部分ビューやビューコンポーネントをSharedフォルダに置くのはちょっと気が引けるけど、いくつかのビューで使い回ししたいときがありましたが、そんなときに相対パスを使うのもありかなと。ケースバイケースでしょうが。