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

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

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

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

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

2 ответов


рода.

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

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

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

Я бы сказал "kludge", а не" hack", Но да, возможно. :)


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

однако у меня было бы свойство 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);
}

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