在我的控制器中,我有为视图创建操作。我想用 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);
至
this.ModelState.AddModelError("BankAccountDetails", Resources.Resource.MustInputBankAccountDetail)
因为在 MVC 中,我们必须在模型中具有相同的 PropertyName,并且在字典中保存模型状态中的异常。