Asp.net mvc 模型在post后不渲染模型值

Asp.net mvc 模型在post后不渲染模型值,asp.net-mvc,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] 所有字段都是可选的,但它们确实有一些验证,我将显示其中的验证消息 问题是,当我提交一次并返回原始视图而

我有一个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可能会覆盖模型。我知道我可以重定向并绕过该问题,但我希望能够保存表单的一部分,并为其余部分显示验证错误。如果没有其他解决方案,我只需验证整个表单,并仅在所有项目都有效时保存。

您尝试过这个吗?:

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

ModelState.SetModelValue("someHiddenValue", newValue);

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


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

我没有。。我把我的验证改为要么全有要么全无。。。如果成功,请保存,然后重定向。。。else show view,它提供了验证消息。谢谢,我不完全理解ModelState是如何工作的,但这提供了足够的信息,可以在必要时解决它。谢谢