2012-06-12 3 views
0

В MyMainView у меня есть несколько PartialViews.Отображение общих свойств модели MVC

Каждый PartialView строго типизирован для свойства, открытого в MyMainView, и каждый частичный вид также содержит некоторую общую информацию.

например

public class MainModel 
{ 
    public SubModel1 { get; set; } 
    public SubModel2 { get; set; } 
    public SubModel3 { get; set; } 
    public CommonStuff { get; set; } 
} 

Есть ли общепринятая практика для достижения совместного использования этой общей собственности?

Я думал о наличии свойства в SubModel, которое возвращалось обратно к его родительскому объекту. Это рекомендуется/не рекомендуется?

например.

public class SubModel1 
{ 
    public int Number { get; set; } 
    public MainModel ParentModel { get; set; } 
} 

Основная цель заключается в том, чтобы не загружать одни и те же данные снова и снова.

Для модели, которую я сейчас просматриваю, это серия словарей LookUp, которые разделены по представлению и используются в таких вещах, как выпадающие списки.

ответ

0

Это post поможет вам решить эту проблему.

В основном случае, возможно, вам придется запросить полную модель в основном действии и подать ее на главный экран. Из основного представления передают основную модель частичным представлениям, которая зависит как от подмодели, так и от общих свойств с использованием Html.RenderPartial или только для вспомогательных моделей для частичных представлений, которым это требуется только.

Вы должны использовать дочерние действия, если вы показываете суб модель в частичном виде и что частичного вид не зависит от основной модели, просто частичного вид полностью зависит от главного вида.

Вы также можете перейти к дочерним действиям, предположив, что вам необходимо применять поведение кэширования для определенного раздела.

Вы можете избежать действий с дочерними элементами, предположив, что хотите отобразить одну и ту же модель в двух или более частичных представлениях в одном и том же представлении, потому что вы должны снова и снова запрашивать данные.

Итак, решение - вы должны разумно выбирать дочерние действия или Html.RenderPartials на основе вышеуказанных комментариев.

0

Вы можете использовать дочерние действия. Phil Haack blogged о них. Таким образом, вы можете инкапсулировать всю общую функциональность в отдельный жизненный цикл Model/Controller/View, который отличается от основного и встроить его в качестве виджета.

Смежные вопросы