我正在开发一个广泛使用局部视图的 MVC 4 站点。然而,在一页上,我在嵌套的局部视图中使用相同的局部视图,并且我的模型也是嵌套的。我在 Fiddler 中检查了它,数据作为表单的一部分发布。当它到达我在控制器的操作方法中设置的断点时,这些嵌套视图模型将作为空值出现。我试过使用编辑器模板而不是部分视图,但我没有运气。
以前有没有人经历过这种行为,并且确实如此,您对可能导致它的原因有任何想法吗?
我正在开发一个广泛使用局部视图的 MVC 4 站点。然而,在一页上,我在嵌套的局部视图中使用相同的局部视图,并且我的模型也是嵌套的。我在 Fiddler 中检查了它,数据作为表单的一部分发布。当它到达我在控制器的操作方法中设置的断点时,这些嵌套视图模型将作为空值出现。我试过使用编辑器模板而不是部分视图,但我没有运气。
以前有没有人经历过这种行为,并且确实如此,您对可能导致它的原因有任何想法吗?
我之前也遇到过同样的问题,因为我不小心将嵌套的 ViewModel 属性传递到我的部分页面中。
如果您要嵌套部分,则需要注意如何传递模型,例如:
假设这是您的 ViewModel:
public class Person
{
public string Name {get; set;}
public Address Address {get; set;}
}
public class Address
{
public string Line1 {get; set;}
//etc
}
和你的控制器动作:
public ActionResult UpdatePerson(Person p)
{
}
如果您有一个单独的视图来显示地址,请确保您这样做:
@Html.RenderPartial("Address", Model)
而不是这样:
@Html.RenderPartial("Address", Model.Address)
如果您执行第二个示例,则“TextboxFor”输入的名称将被错误地命名,以便模型绑定器能够理解。
另一种选择是在您的控制器操作中专门调用地址,如下所示,以允许模型绑定器正确查看地址:
public ActionResult UpdatePerson(Person p, Address addr)
{
}