tekitoumemo’s diary

C#、.NET系の技術ブログを書いています。みんなの洋楽ランキングを運営しています。

.Net Coreの部分ビュー

同じビューを何回も書き続けるのが微妙なので、ASP.NET Coreでは部分ビューってのがあります(どのフレームワークにもあるけど)。ASP.NET5でもHTMLヘルパーであったのですが、ちょっと書き方が変わってるので備忘録として。

HTML5であった@Html.Partialとほとんど同じ機能ですが、.NETCoreになってHTMLヘルパーからタグヘルパーに変更されたのでクソダサい記述はなくなりました。さらにasync、awaitが使えるので非同期でビューを動かすことができるので、重いビューでも多少は大丈夫になった感じですかね?わざわざJS使う必要がないところとか良い感じでしょうか。

部分ビューとは

部分ビューとは、別のビュー内でレンダリングされるビューのことです。

1枚のページに複数のHTMLがかけるよ!しかもMVCでってこと。つまりこういうことです。
f:id:tekitoumemo:20180805220945p:plain
この赤い部分は再利用するので部分ビューにしています。

部分タグ ヘルパー

以下の記述ではViewsのSharedにある_TestPartial.cshtmlがタグを記述したところに挿入されます。

<partial name="_TestPartial" />

非同期もいけます。

@{
    await Html.RenderPartialAsync("_TestPartial");
}

パスを指定すれば、ディレクトリわけもできます。

<partial name="~/Views/Hoge/_Test.cshtml" />

モデルをバインドされる場合は以下です(試してない。

<partial name="_Test.cshtml" for="Model" />

非同期は、.NETCoreになってから追加された機能(おそらく)なので、わざわざJSフレームワークでやる必要はねぇなと思う場所には使えるかもしれません。モデルバインドも部分ビューもめっちゃ使えるのですが、結局依存しまくって汎用的に使えなかったり、技術負債になりがちなのでちゃんと考えて使った方が良いかもしれませんね。導入するのは比較的簡単なので、ビューのメンテナンスがめんどくさいなと思ったら導入するぐらいの気持ちでやった方が良いと思います。