2009-06-04 29 views
1

My MVCアプリケーションには、1つ以上の子モデルを含む親モデルが含まれています。RenderPartialとPartial Viewsの動的選択

私は、親モデルからプロパティを表示するようにメインビューを設定してから、さまざまなタイプの(すべて同じベースタイプを継承する)子モデルのコレクションをループします。各子モデルは、対応する部分図を有する。このような子モデルを超える

私の「親」ビューの繰り返し処理:

foreach (ChildBase child in ViewData.Model.Children) 
{ 
    Html.RenderPartial("Partials/"+child.ChildType.ToString()+"Child", 
    section); 
} 

私のアプリケーションは、すべてが素晴らしい作品適切な/Partials/ChildType1.ascx、ChildType2.ascx、などがあります。

  1. これはパーシャルビューを使用する適切な方法ですか?ダイナミックな名前のためにちょっと離れているように感じますが、大きなswitch文に頼らずに適切なビューを動的に選択する別の方法はわかりません。

  2. 同じモデルの複数の「モード」に同じビューを使用することをお勧めしますか?私はモデルの "読み取り専用"ビューを表示するために同じ.ascxを使い、ビューを返すためにどのコントローラアクションが使用されるかに基づいて編集フォームを使いたいと思います。

答えて

1

アイコニック、

それはあなたが達成しようとしている正確に何を知らなくても質問に答えることは困難です。

私も行く必要があります:あなたがウェブ上のフォームに精通している場合、瞬間のためのWebフォームのユーザーコントロールとしてあなたの部分図を考える

とに関連しているモデルの一部を考えるあなたのパーシャルビューは、パーシャルビューに渡りたい「情報の断片」です。

部分ビューを使用する自然な選択肢は、サイト全体の多くのビューで使用される要素です。

答えで

だから... ...:あなたは何をしているか1.Although

が有効である、それは非常に正しいようではありません。私が使用している部分図の例では、そのモデルとして行オブジェクトを渡し部分図を呼びたいデータのグリッド内の行のようになります。

foreach (MyObject o in Model.objects) 
{ 
    Html.RenderPartial("Shared/gridRowForObject.ascx", o, ViewData); 
} 

あなたは強くにもあなたの意見を入力することができます特定の型がModelオブジェクトとして渡されることを期待してください。

再び別の使用は、これは個人的な設計上の決定であるが、私は少なくともアプリケーション/プレゼンテーションロジックを必要とするオプションのために行くだろうログインボックスやなどを「連絡私はフォームの

2._Ultimatelyかもしれませんあなたのビューで最もクリーンなコードです。私はあなたのビューで多くの条件付き呼び出しに書くのを避ける傾向があります。たとえば、あなたの例のようにすべての部分ビューに渡す基本型を推測すると、あなたを結びつけるかもしれません。

MVCフレームワークを学ぶとき、私はOxiteコードが有用であることを発見しました。

私は役立つことを願っています。