我正在使用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);
}
答案 0 :(得分:0)
我实际上两次绑定到模型中的同一个字段。这就是造成这种情况的原因。我在同一个字段上使用TextBoxFor和HiddenFor。
因此,当MVC在表单提交时将模型错误发送回我的控制器时,它发送了2。
我将TextBoxFor更改为TextBox,这解决了问题,因为它现在只绑定到隐藏。