在我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
我不使用驗證方法在我的控制器的代碼。問題也出現在我的自定義屬性中,但它不會在Required屬性中出現。此外,我還要注意定製的該構造函數的屬性也被稱爲兩次
我的行動
[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已經包含錯誤兩次。
嗯,你有屬性聲明中的55和錯誤消息中的65值 – 2012-04-12 18:36:49
你可以發佈操作嗎?另外,確認你沒有在視圖中調用兩次'ValidationSummary'。 – 2012-04-12 18:37:58
更新了行動代碼@Steve Mallory – bogert 2012-04-12 18:40:18