一度だけ定義したい精巧な繰り返しレイアウトがある場合、たとえば、ボックスの派手なグリッドを言いますが、これらのボックスの内容は、ビューとモデルの両方でグリッドごとに異なります (ただし、グリッド内ではありません)。ページには製品概要のファンシーグリッドがあり、別のページにはカテゴリー紹介のファンシーグリッドがあります。その MVC3 を実装するための最も賢明なパターンは何ですか?
質問する
949 次
3 に答える
2
表示テンプレートを使用できます。たとえば、タイプのビュー モデルでプロパティを定義しますEnumerable<SomeViewModel>
。
public class MyViewModel
{
public IEnumerable<SomeViewModel> Models { get; set; }
}
ビューで DisplayFor ヘルパーを使用します。
@model MyViewModel
@Html.DisplayFor(x => x.Models)
~/Views/Shared/DisplayTemplates/SomeViewModel.cshtml
次に、Models コレクション ( )の各要素に対して自動的にレンダリングされるカスタム表示テンプレートを定義します。
@model SomeViewModel
<div>
@Html.DisplayFor(x => x.SomeProperty)
...
</div>
テンプレート化されたヘルパーは慣例に従って機能します。デフォルトでは、最初に~/Views/CurrentController/DisplayTemplates
フォルダーを検索し、次に~/Views/Shared/DisplayTemplates
コレクション プロパティのタイプと同じ名前のテンプレートのフォルダーを検索します ( SomeViewModel.cshtml
)。
于 2012-05-10T13:21:46.820 に答える
0
繰り返しセクションを部分ビューに移動できます。その後、その部分的なビューはどこでも再利用できます
于 2012-05-10T13:24:35.693 に答える
0
アクション ストア コントローラーの GenreMenu:
[ChildActionOnly]
public ActionResult GenreMenu()
{
var genres = storeDB.Genres.ToList();
return PartialView(genres);
}
ビューでは、これにより部分ビューが 3 回繰り返されます。
@for (int i = 0; i < 3; i++)
{
Html.RenderAction("GenreMenu", "Store");
}
于 2012-05-10T15:35:57.773 に答える