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

时间:2015-07-08 21:15:08

标签: 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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:19)

尝试使用

ModelState.SetModelValue("PropertyID", new ValueProviderResult("New value", "", CultureInfo.InvariantCulture));

这是一篇有用的文章。

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

答案 1 :(得分:5)

你可以删除错误

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

if (ModelState.IsValid)
{
}