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>
Другие вопросы по тегам