UpdateModel不处理对视图模型中对象的引用

时间:2010-07-20 19:15:02

标签: asp.net-mvc

我正在使用

UpdateModel(<model>, new[] {"Customer.Name", "FirstName", "etc..." })

Customer.Name是Customer对象的一个​​属性,它驻留在视图模型中。

当我发布表单时,我发现正在按预期发布值。当我到达UpdateModel部分时,FirstName值就在那里,但Customer.Name不是。

有什么想法吗?附加说明:如果我从UpdateModel中取出包含而只是说 UpdateModel(模型)一切正常。

谢谢,

杆。

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题可能是这个例子会有所帮助:

让我们说模型是;

public class Customer{
 public string Name;
 public string Phone;
 public string Email;
}

UpdateModel具有以下签名:

UpdateModel(ModelInstance, string[] whiteList)

其中实例是模型的实例,whiteList是要在模型上更新哪些属性,并将值发布到控制器操作。

例如,如果您拥有以下代码:

UpdateMode(myCustomerInstance, new string[] {"Name", "Phone"})

这将使用Name和Phone的已发布值更新myCustomerInstance对象,忽略发布的Email值。因此,对于发布到控制器操作的每个属性,它将使用反射来检查正在更新的模型是否包含具有此类名称的属性。如果是,则使用后期值更新此属性。

查看TryUpdateModel可能也会有所帮助,因为它会吞下任何异常,只返回指示操作是否成功的bool

希望澄清一下发生了什么。