ModelState в MVC не показывает ошибку
В моем контроллере у меня есть Создать действие для просмотра. Я хочу показать исключение проверки с 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>
}
Я даю только одну проверку исключения из ModelState(первая ошибка модели) в представлении.
Я нахожу ответ. Я должен изменить этот код:
this.ModelState.AddModelError("BankAccounts", Resources.Resource.MustInputBankAccountDetail);
К
this.ModelState.AddModelError("BankAccountDetails", Resources.Resource.MustInputBankAccountDetail)
потому что в MVC у нас должно быть одно и то же PropertyName в Model, а в словаре - исключение в модели.
2 ответа
Вы можете попытаться передать false вместо true в ваш вызов ValidationSummary. Этот параметр - excludePropertyErrors. Это означает, что если задано значение true, в сводке не будут отображаться ошибки относительно свойств PositionContacts и BankAccounts.
Пожалуйста, убедитесь, что вы включили файл проверки модели 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>