MVC Controller.UpdateModel <t>(T)实际上尝试做什么?</t>

时间:2009-08-04 21:43:00

标签: asp.net-mvc

当我提交MVC页面时,我在UpdateModel方法中从System.Web.Mvc Controller对象获得了IvalidOperationException。

MSDN文档声明此方法执行以下操作:

使用控制器当前值提供程序中的值更新指定的模型实例。

值提供程序是否引用当前的Request对象?

或者它究竟在哪里获得用于更新模型的值?

具体来说,UpdateModel方法在检查

时会检查它是什么意思

“abcXYZ”类型的模型未成功更新

由于

2 个答案:

答案 0 :(得分:3)

是的,默认值提供程序引用当前请求对象(默认情况下为Request.Form.AllKeys。)

UpdateModel尝试在您的Model上设置与该集合中的Key匹配的任何属性。

如果它不能,因为没有setter,或者没有直接强制转换,你将收到该错误。

答案 1 :(得分:0)

我不知道你问题的所有答案,但我之前遇到过这个问题,现在我检查我想要更新的模型是否同时包含了getter和setter。这通常可以解决我的问题。

我现在也使用TryUpdateModel,以便我可以捕获异常并实现验证类,以确保满足模型的最低要求。

我也使用UpdateModel<MyModel>(Model)

我还会在插页上使用类似public ActionResult Create(MyModel myModel){}

的内容

就像我说的那样,对你的问题没有具体的答案,但这些是我为使其发挥作用所做的事情。

希望它有所帮助。