ピースペース

部分ページ(@Razorエンジン)について自分なりに整理をしてみた

leave a comment »

要するに僕が知りたいのは
Razorなページで、従来のASP.NETやSilverlightでいうところのユーザーコントロール
は、どうやって作るの?ってことだ
それって、MVCな関係とうまく調和できるの? ってことだ

で、ユーザーコントロールに相当するものは、「部分ビュー」と言われるものらしい
って、なあに? を調査してつかんだイメージは

IMG_0001

  • ViewはActionヘルパーで、その場所に子供のビューを埋め込むことができる
  • 最終的な応答でひとつのページになるビューを分割して定義できる

さて、Scafoldな説明で僕が混乱していたこと(わかってなかったこと)も整理しておこう

  • ControllerのActionはブラウザからのGet/Postでキックされるだけでなく 、Viewから呼び出することもある
  • Viewには最終的にクライアントへ応答されるものと、その親Viewに埋め込まる子供View(PartialView)がある

さらに、つっこんでおくと

  • Viewはクラスを変更でないので、それ自体に親Viewとか部分ビューとかの属性があるわけではない
  • Viewを追加するときに「部分ビューとして作成する」オプションはあるが、単に最初に用意されるコードが違うだけ
  • で、そのViewを親Viewとして使うのか?子Viewとして使うのか?はActionが決める
  • ActionがViewをreturnすることも、PartialViewをreturnすることもできる
  • Viewをreturnするのが親Action、PartialViewをreturnするのが子Action
  • その親Actionと子Actionという属性もクラスが違うわけではなく、単純にReturnの違いだけ
  • なので、Child1ActionはChild1ViewをPartialViewではなくViewとしてreturnすることも可能 は可能
    PartialViewとしてreturnすべきところを間違えてViewをreturnすることも可能
    間違えてViewとしてreturnした場合、それはいったいどうなるか?は、一度確認して おこう!
  • 間違わないように、属性で「これは子View専用ですよ」的な宣言もできる
  • さらに、OutputCasheとか謎の宣言もできる ←は、また今度調べる

ということで
無事に、ひとつの応答ページを複数のViewに分解して作成する方法が見えてきた
残る問題は、このControllerにどんな名前を付けるか?

Controllerの名前=Modelの名前という呪縛を解かなければならない
あるいは、Modelをもっと柔軟にとらえればいいのかも
または、上のように部分に分割したViewは場合によっては別々のフォルダ(Model)に分けてもいいのかかも
その場合は、当然Controllerもわかれることになる
これで、「ひとつのViewはひとつのModelを表示する」を貫ける!
あーーすっきりした。よかった。

Written by nasu38yen

2011年7月14日 @ 9:01 AM

カテゴリー: プログラム

Tagged with

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。