ASP.NET MVC3模型错误(错误消息中的上一个值)

时间:2014-11-19 19:55:44

标签: asp.net-mvc asp.net-mvc-3

我正在使用ASP.NET MVC 3.我有一个整数字段,作为测试,我在文本框中输入了对于int无效的字符值。

所以当我测试时,

我输入的值无效,然后点击提交。

MVC传回以下错误消息:

价值' FF,'对FCode无效。

然后我从表单字段中删除FF并输入HH,然后单击“提交”。然后MVC给了我以下消息:

价值' FF,HH'对FCode无效。

然后说我将表单字段更改为BB,我收到以下错误:

价值' HH,BB'对FCode无效。

始终在错误消息中返回最新的2。我如何解决此问题才能返回最新的1?用户不想看到他们以前的错误,他们只想看最近的错误。

以下是我的控制器的代码:

if (ModelState.IsValid){
//Do valid stuff here
}
else
{
     var query =
     from val in ModelState.Values
     where val.Errors.Count == 1
     select val.Errors;

     foreach (var error in query.ToList())
     {
          errorList.Add(error[0].ErrorMessage);
     }

     Response.TrySkipIisCustomErrors = true;
     Response.StatusCode = 500;
     return Json(errorList);
}

1 个答案:

答案 0 :(得分:0)

我实际上两次绑定到模型中的同一个字段。这就是造成这种情况的原因。我在同一个字段上使用TextBoxFor和HiddenFor。

因此,当MVC在表单提交时将模型错误发送回我的控制器时,它发送了2。

我将TextBoxFor更改为TextBox,这解决了问题,因为它现在只绑定到隐藏。