模型在发布后不呈现模型值

时间:2009-07-15 19:18:07

标签: asp.net-mvc

我有一个ASP.NET MVC页面,其中包含一个项目列表......

//a vague representation
Model.someValue[0]     Model.someHiddenValue[0] 
Model.someValue[1]     Model.someHiddenValue[1]
Model.someValue[2]     Model.someHiddenValue[2]

所有字段都是可选字段,但它们确实有一些验证,我正在显示验证消息。

问题是,当我提交一次并返回原始视图而不是重定向时,隐藏字段没有获得新值,但是它们的新值是在传递给视图的视图模型中。

我认为ModelState可能会覆盖模型作为验证的一部分。我知道我可以进行重定向并绕过问题,但我希望能够保存部分表单并显示其余的验证错误。如果没有其他解决方案,我将简单地验证整个表单,并且仅在所有项目都有效时保存。

2 个答案:

答案 0 :(得分:2)

如果ModelState中存在值,它会显示它们而不是模型中的值,因为它们代表用户提供的“最后”已知状态。

如果您实际上并未打算让用户重新进行编辑,则应清除ModelState。

答案 1 :(得分:0)

你试过这个吗?:

var newValue = new ValueProviderResult("value", "value", System.Globalization.CultureInfo.CurrentUICulture);

ModelState.SetModelValue("someHiddenValue", newValue);