在处理1 ---> 0 ... 1关系时,我正在尝试为0 ... 1结束使用单独的局部视图。为了提高效率,我想使用RenderPartial()而不是RenderAction()。
是否可以从该局部视图访问包含视图的模型数据,以便访问主对象的PK / ID?
这对于一个甚至不应该首先考虑的黑客攻击只是一个悲伤的尝试吗?
有没有人有更好的例子说明如何使用MVC处理这个1 ---> 0 ... 1的关系?
答案 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);
}
或类似的东西。这实际上取决于事情的设置方式,但这是一般的想法。