Razorを使用する際のメモ

ここではASP.NET Coreの環境を想定している。

_ViewImports.cshtmlについて

_ViewImports.cshtmlに、@usingや@addTagHelperなどを書くことによって、 全てのファイルでこれらが共有される。 つまり、

Razor
@using MyNamespace;
@using static MyNamespace.MyHelperClass;

のように書くことによって、MyNamespaceやMyHelperClassを それぞれのcshtmlファイルに書く必要がなくなる。

コードの埋め込みについて

HTMLの属性

HTMLの属性に文字列を読み込んで書き込む場合、 シンプルな

Razor
<span huga="@Piyo.hoo"/>

レベルであれば問題ないが、

Razor
<span huga="@Piyo.foo + "bar""/>

というように文字列のクオーテーションが被る場合は、 シングルクオートを使うよりかっこで囲んで、

Razor
<span huga="@(Piyo.foo + "bar")"/>

とする方が見た目が綺麗だと思う(好みによる)。

各種データ等の埋め込み

HTMLエンコードされたテキスト出力するだけであれば@hogeで出力できるが、 エンコードされないようにするには用意されている関数を呼び出す必要がある。

まず、HTMLタグなどが入ったHTMLをHTMLとして出力する場合、 @Html.Rawを使用する必要がある。 例えば、HTMLファイルやCSSファイルなどを埋め込むなら、

Razor
@Html.Raw(await System.IO.File.ReadAllTextAsync("relative/path"))

でOKである。なお、相対パスはプロジェクトのパスが元となる。

つぎに、Jsonのデータを埋め込む場合は、

Razor
@Json.Serialize(data)

でシリアライズした上で埋め込むことができる。