ASP.NET MVC2 - возможно ли получить доступ к данным модели родительского представления из частичного представления? - PullRequest
6 голосов
/ 24 сентября 2010

При обработке отношения 1 ---> 0 ... 1 я пытаюсь использовать отдельное частичное представление для конца 0 ... 1. Я хотел бы использовать RenderPartial (), а не RenderAction (), для эффективности.

Можно ли получить доступ к данным модели вмещающего представления из этого частичного представления, чтобы получить доступ к PK / ID основного объекта?

Это просто грустная попытка взлома, которую вообще не следует рассматривать?

У кого-нибудь есть лучший пример того, как справиться с этим отношением 1 ---> 0 ... 1 с использованием MVC?

Ответы [ 2 ]

4 голосов
/ 24 сентября 2010

Вроде.

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

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

Это просто грустная попытка взлома, которую вообще не следует рассматривать?

Я бы сказал «клудж», а не «хак», ноДа, возможно.:)

3 голосов
/ 24 сентября 2010

Сначала спросите, зачем вам ПК?

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

foreach(var vChild in Model.Children)
{
    vChild.ParentID = Model.ID;
    Html.RenderPartial(ViewName, vChild)
}

Если вам нужны ВСЕ данные из родительского объекта, вы можете вместо этого иметь родительское свойство и установить все свойство.

Эта логика была бы лучше подходит для самой Модели, однако вот так:

List<Children> mChildren;
public void AddChild(Child tChild)
{
     tChild.ParentID = this.ID;
     mChildren.Add(tChild);
}

или что-то в этом роде. Это будет зависеть от того, как все настроено, но это общая идея.

...