Проверка достоверности при загрузке страницы - PullRequest
6 голосов
/ 23 марта 2012

В настоящее время у меня есть приложение MVC 3, использующее движок Razor View.У меня включена ненавязчивая проверка.Проблема в том, что по какой-то причине при загрузке страницы в моем представлении «Правка» отображаются ошибки для обязательных полей (даже если поля имеют значение).Кто-нибудь еще сталкивался с этим?Любые предложения для решения этой проблемы?Спасибо.

Образец поля с проблемой:

    <div class="full">
            <label>Description:</label>
            @Html.EditorFor(x=>x.Description, new{@class="super-textarea"})
            @Html.ValidationMessageFor(x => x.Description)

        </div>

Аннотации данных на модели:

     [Required, DataType(DataType.MultilineText)]
    public virtual string Description { get; set; }

Настройки WebConfig:

     <add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

Иконечно правильные файлы jquery ....

Ответы [ 2 ]

16 голосов
/ 24 августа 2012

Вы также можете удалить ошибки из ModelState

ModelState.Clear();
11 голосов
/ 23 марта 2012

Хорошо.Нашел проблему.Проверка происходила из-за попытки привязки модели.Это происходило потому, что наш метод Get выглядит следующим образом.

    [HttpGet, RequestedObjectFilter]
    public virtual ViewResult Edit(TKey id, T requestedObject)
    {

        return View(requestedObject);
    }

Особенностью .NET MVC является то, что каждый раз, когда ссылочное значение передается в качестве параметра в сигнатуре метода ViewResult, вызывается ModelBinding, которыйв свою очередь запускает проверку.Причина, по которой мы передали объект нашему методу, была вызвана нашим RequestedObjectFilter, который извлекал связанную сущность из нашего абстрагированного репозитория и передавал ее этому методу через свойство ActionParameters.Мы реорганизовали наш RequestedObjectFilter, чтобы вместо этого установить ViewModel, что позволило нам удалить параметр из метода, что позволило решить проблему.Теперь наш метод выглядит так:

     [HttpGet, RequestedObjectFilter]
    public virtual ViewResult Edit(TKey id)
    {

        return View();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...