在我MVC3应用程序,我有模型(不是重要的属性删除):
public class AccountViewModel
{
[StringLength(65)]
public string Property1 { get; set; }
[StringLength(65)]
public string Property2 { get; set; }
}
问题是,当一个动作被称为submited两次验证属性,我可以得到4个错误的总结,而不是2:
'Property1' length must be less than 65 characters
'Property1' length must be less than 65 characters
'Property2' length must be less than 65 characters
'Property2' length must be less than 65 characters
我没有在我的控制器代码中使用验证方法。 这个问题似乎也与我的自定义属性,但它不具有必需属性发生。 此外,我还要注意定制的该构造函数的属性也被称为两次
我的行动
[HttpPost]
public ActionResult CreateOrEdit(AccountViewModel model) {
if (!ModelState.IsValid) {
return View("Edit", model);
}
try {
_accountService.InsertOrUpdate(model);
}
catch (Exception ee) {
ModelState.AddModelError("", ee.Message);
return View("Edit", model);
}
return RedirectToAction("Index");
}
在查看我渲染用我的错误:
@{
var errors = ViewData.ModelState.Errors();
<div class="alert alert-block alert-error @(errors.Count == 0 ? "hide" : "")" >
<h4 class="alert-heading"> You got an error!</h4>
<ul>
@foreach (var error in errors) {
<li>@error</li>
}
</ul>
</div>
}
我加倍重新检查一遍,ViewData.ModelState已经包含了两次错误。