我正在使用
UpdateModel(<model>, new[] {"Customer.Name", "FirstName", "etc..." })
Customer.Name是Customer对象的一个属性,它驻留在视图模型中。
当我发布表单时,我发现正在按预期发布值。当我到达UpdateModel部分时,FirstName值就在那里,但Customer.Name不是。
有什么想法吗?附加说明:如果我从UpdateModel中取出包含而只是说 UpdateModel(模型)一切正常。
谢谢,
杆。
答案 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
希望澄清一下发生了什么。