回发后的Viewmodel

时间:2010-11-22 10:29:16

标签: c# asp.net-mvc-2 viewmodel

我的页面接受HttpGet上的viewmodel。当我提交表单时,我的HttpPost修饰方法绑定到该模型,所有都是花花公子...我可以使用模型数据来保存。

我的问题是: 并非原始模型中的所有值都传递给帖子,而只传递给表单字段。

有没有办法将原始模型传递给post方法,只更新表单更新的属性?

我知道我可以使用隐藏字段来完成此任务,但是视图模型很复杂并且具有嵌套类,因此将它全部映射将是一件痛苦的事。我能以一种更简单的方式实现这一目标

感谢名单

2 个答案:

答案 0 :(得分:1)

只有属于html Form一部分的值才会重新绑定在帖子上。如果您需要原始模型中的所有值

  • 您可以在执行Get时将它们包含为隐藏字段,Get将在发布时绑定到模型;或
  • 使用模型ID(我假设存在)调用数据库以获取相关字段并重新水化对象。

答案 1 :(得分:1)

您可以使用JavascriptSerializer首先序列化VM,然后将其保存在隐藏字段中。然后,您可以通过反序列化字段再次创建ViewModel,然后在隐藏字段中应用字符串中的已发布值。

如果绑定到VM,则可以先将其反序列化为原始状态,然后使用控制器的TryUpdate方法用发布的值覆盖这些值。