在我的控制器中我有创建视图的动作。我想用ModelState显示验证异常。但它不能真正起作用。
/// <summary>
/// GET: /AgentPosition/Create
/// </summary>
/// <param name="model">The model.</param>
/// <returns></returns>
public override ActionResult Create(Models.AgentPosition.AgentPositionModel model)
{
if (model.PositionContacts == null || model.BankAccountDetails == null)
{
if (model.PositionContacts == null)
{
this.ModelState.AddModelError("PositionContacts",Resources.Resource.MustInputPositionContact);
}
if (model.BankAccountDetails == null)
{
this.ModelState.AddModelError("BankAccounts", Resources.Resource.MustInputBankAccountDetail);
}
return this.View(model);
}
return base.Create(model);
}
在我的视图中
@using (this.Html.BeginForm("Create", "AgentPosition", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
this.Html.ValidationSummary(true);
<div>
@this.Html.Partial("BankAccounts", this.Model)
@this.Html.ValidationMessageFor(model => model.BankAccountDetails)
</div>
<div>
@this.Html.Partial("PositionContacts", this.Model)
@this.Html.ValidationMessageFor(model => model.PositionContacts)
</div>
}
我在View中只给出了一个来自ModelState的异常验证(第一个模型错误)。
我找到了答案。 我必须更改此代码:
this.ModelState.AddModelError("BankAccounts", Resources.Resource.MustInputBankAccountDetail);
TO
this.ModelState.AddModelError("BankAccountDetails", Resources.Resource.MustInputBankAccountDetail)
因为在MVC中我们必须在Model中具有相同的PropertyName,并且它在字典中保存在modelstate中的异常。
答案 0 :(得分:1)
您可以尝试将false而不是true传递给ValidationSummary调用。此参数为excludePropertyErrors,这意味着如果将其设置为true,则摘要不会显示相对于PositionContacts和BankAccounts属性的错误。
答案 1 :(得分:0)
请检查您是否在视图中包含了Jquery模型验证文件,如下所示:
<script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'></script>
<script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>