0

我正在开发一个广泛使用局部视图的 MVC 4 站点。然而,在一页上,我在嵌套的局部视图中使用相同的局部视图,并且我的模型也是嵌套的。我在 Fiddler 中检查了它,数据作为表单的一部分发布。当它到达我在控制器的操作方法中设置的断点时,这些嵌套视图模型将作为空值出现。我试过使用编辑器模板而不是部分视图,但我没有运气。

以前有没有人经历过这种行为,并且确实如此,您对可能导致它的原因有任何想法吗?

4

1 回答 1

1

我之前也遇到过同样的问题,因为我不小心将嵌套的 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)
{
}
于 2012-06-16T15:43:05.960 回答