Razorを使用する際のメモ
ここではASP.NET Coreの環境を想定している。
_ViewImports.cshtmlについて
_ViewImports.cshtmlに、@using
や@addTagHelper
などを書くことによって、
全てのファイルでこれらが共有される。
つまり、
@using MyNamespace;
@using static MyNamespace.MyHelperClass;
のように書くことによって、MyNamespace
やMyHelperClass
を
それぞれのcshtmlファイルに書く必要がなくなる。
コードの埋め込みについて
HTMLの属性
HTMLの属性に文字列を読み込んで書き込む場合、 シンプルな
<hoge huga="@Piyo.hoo"/>
レベルであれば問題ないが、
<hoge huga="@Piyo.foo + "bar""/>
というように文字列のクオーテーションが被る場合は、 シングルクオートを使うよりかっこで囲んで、
<hoge huga="@(Piyo.foo + "bar")"/>
とする方が見た目が綺麗だと思う(好みによる)。
各種データ等の埋め込み
HTMLエンコードされたテキスト出力するだけであれば@hoge
で出力できるが、
エンコードされないようにするには用意されている関数を呼び出す必要がある。
まず、HTMLタグなどが入ったHTMLをHTMLとして出力する場合、
@Html.Raw
を使用する必要がある。
例えば、HTMLファイルやCSSファイルなどを埋め込むなら、
@Html.Raw(await System.IO.File.ReadAllTextAsync("relative/path"))
でOKである。なお、相対パスはプロジェクトのパスが元となる。
つぎに、Jsonのデータを埋め込む場合は、
@Json.Serialize(data)
でシリアライズした上で埋め込むことができる。