如何使用ASP.NET MVC更改ModelState中的值,以使其有效?

Lou*_*ise 11 c# asp.net asp.net-mvc asp.net-mvc-4

我目前允许选择列表的初始值为"".用户可以选择是填写此选项还是将其保留为默认值.

此selectList适用于ID,ID将传递给我的控制器.但是,由于未选择int,因此ModelState结果为False,因为输入是空字符串而不是int.

我想将此空字符串的值更改为0.这将导致ModelState为True.我一直在查看ModelState字典类,以便在检查ModelState之前可以更改键值对.但是,我无法成功使用它.
https://msdn.microsoft.com/en-us/library/system.web.mvc.modelstatedictionary(v=vs.118).aspx

任何帮助将不胜感激.

Gar*_*rry 22

尝试使用

ModelState.SetModelValue("PropertyID", new ValueProviderResult("New value", "", CultureInfo.InvariantCulture));
Run Code Online (Sandbox Code Playgroud)

这是一篇有用的文章.

http://geekswithblogs.net/BobHardister/archive/2013/03/11/retain-and-set-posted-checkbox-value-in-the-mvc-4.aspx


Jam*_*D77 9

你可以删除错误

if (ModelState.ContainsKey("{key}"))
    ModelState["{key}"].Errors.Clear();

if (ModelState.IsValid)
{
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这在更改值后非常有用。正如我所发现的,当值更改时,相关的错误仍然存​​在。:) (2认同)