ビュースクリプトの実装(Razor)
コントローラで実行したアクションの結果を出力するためのビュースクリプトを作成する。作成する場所はViewsフォルダ配下で、<コントローラ名>/<アクション名>.vbhtmlという名前にする。
コントローラのViewヘルパーメソッドでビュースクリプト名を指定した場合は、その名前で作成する。
コントローラで設定したビュー変数ViewDataの各プロパティをHTMLに埋め込む感じ。プロパティを新たに設定する場合は、ビュースクリプトの@Code~End Codeの間に書く。
ビュースクリプトの例はこんな感じ。
@Code
ViewData("Title") = "About"
End Code
@ViewData("Title").
@ViewData("Message")
Use this area to provide additional information.
ViewData("Message")はコントローラで設定済み。ViewData("Title")を"About"としているので、上記ソースの5行目は
と書いたのと等価になる。About.
ここで分からないのが、ViewDataの前に@をつける場合とつけない場合があること。設定時は@をつけず、出力時には@をつける???
レイアウトの適用
上記で作成したビュースクリプトですが、HTML文書というにはhead要素とかいろいろと足りないものがあります。実はこのビュースクリプトを埋め込んで完全なHTMLを作成する「レイアウト」というのがあり、これはViewsフォルダ配下のShared/_Layout.vbhtmlがそれであるというのです。スタイルなんかをここで定義するわけですね。ここではコードは省略しますが、コード中の「@RenderBody()」というところにビュースクリプトが埋め込まれます。本文では、「ビュースクリプトの結果が埋め込まれる」とあるので、@ViewData("Title")というのは、ViewData("Title")を出力しなさいという命令である、と理解したほうがよさそうです。@がつくと命令ということ?また、このレイアウトファイルは必ず_Layout.vbhtmlになるのかというとそういうわけでもなく、レイアウトファイルのファイル名を指定しているのは、Views/_ViewStart.vbhtml(ファイル名固定)で、Layout変数で指定したファイルをレイアウトと認識します。Razorはビューの処理に先立ち、まずこの_ViewStart.vbhtmlの処理を行うので、_ViewStart.vbhtmlには、レイアウトファイルの指定のほか、ビュースクリプトに共通の処理があれば、それも記述します。
0 件のコメント:
コメントを投稿