ASP.NET MVC2 - 是否可以从局部视图访问父视图的模型数据?

时间:2010-09-24 17:56:47

标签: asp.net-mvc asp.net-mvc-2 partial-views

在处理1 ---> 0 ... 1关系时,我正在尝试为0 ... 1结束使用单独的局部视图。为了提高效率,我想使用RenderPartial()而不是RenderAction()。

是否可以从该局部视图访问包含视图的模型数据,以便访问主对象的PK / ID?

这对于一个甚至不应该首先考虑的黑客攻击只是一个悲伤的尝试吗?

有没有人有更好的例子说明如何使用MVC处理这个1 ---> 0 ... 1的关系?

2 个答案:

答案 0 :(得分:4)

排序。

如果未将模型传递给RenderPartial,则默认情况下会传递父视图。因此,您可以通过部分Model属性访问它。

但是如果你确实传递了一个模型,那么不,该部分看不到父模型,因为它看到了自己的模型。

  

这对于一个甚至不应该首先考虑的黑客攻击只是一个悲伤的尝试吗?

我会说“kludge”而不是“hack”,但可能是。 :)

答案 1 :(得分:3)

首先问你为什么需要PK?

但是如果我真的需要它,我会在子模型中有一个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);
}

或类似的东西。这实际上取决于事情的设置方式,但这是一般的想法。