ASP.NET MVC RC2 - Почему я не могу использовать обычные параметры проверки? например RequiredFieldValidator - PullRequest
8 голосов
/ 16 марта 2009

Я пытаюсь проверить основную форму, могу ли я использовать стандартные средства проверки? Везде, куда я смотрю, похоже, что я пытаюсь использовать что-то вроде ниже

<%= Html.ValidationSummary() %>

<% using (Html.BeginForm()) {%>

    <fieldset class="fields">
        <legend>Create New Contact</legend>
        <p>
            <label for="task">Task Name:</label>
            <%= Html.TextBox("task") %>
            <%= Html.ValidationMessage("task", "*") %>
        </p>
        <p class="submit">
            <input type="submit" value="Create" />
        </p>
    </fieldset>

<% } %>

Я думал, сможет ли использовать стандартные компоненты? Любые указатели были бы блестящими!

Ответы [ 5 ]

9 голосов
/ 16 марта 2009

ASP.NET MVC использует совершенно другую философию для обычного ASP.NET; Таким образом, за некоторыми небольшими исключениями, в ASP.NET MVC не будет работать почти никаких элементов управления ASP.NET (и т. д.). Помимо всего прочего, точка в жизненном цикле страницы, где они обычно делают что-то , просто не существует .

Есть способы сделать это, например, в плагине проверки jQuery , или с помощью IDataErrorInfo и т. Д.

Обратите внимание, что если вы делаете проверку на клиенте, вы все равно должны делать это (отдельно) на сервере. Этим надоедливым браузерам нельзя доверять; -p

3 голосов
/ 16 марта 2009

Валидаторы, о которых вы говорите, относятся к сфере веб-форм и веб-контролей. В ASP.NET MVC все, что вы делаете в представлении, генерирует чистый HTML. Valdiators - это, по сути, веб-элементы управления Label, для которых требуется представление, которое больше не доступно.

3 голосов
/ 16 марта 2009

ASP.NET MVC устраняет большинство классических элементов управления ASP.NET, так как инфраструктура не поддерживает многие из тех глупостей, которые эти элементы управления должны были внедрить в ваши страницы, чтобы они работали. Такие вещи, как представление состояния и непонятные функции javascript повсюду суетно.

2 голосов
/ 16 марта 2009

Валидаторы ASP.NET больше не работают, но была проделана определенная работа, чтобы упростить задачу. Я использовал, например, xVal , который выполняет достойную задачу и даже интегрируется с валидацией JQuery, но я рекомендую вам узнать, как работает валидация, прежде чем использовать что-то подобное.

Упрощенно, в ViewData есть коллекция ошибок, которая содержит две коллекции: одна ссылается на каждое поле формы, а другая представляет собой список ошибок, связанных с ними. Это заполняется при связывании или вручную, и если есть какие-то ошибки, они могут отображаться в сводке или рядом с полем (используя для этого html-помощники).

Платформы автоматически заполняют коллекцию и могут преобразовывать правила проверки в сценарии на стороне клиента, но суть в том, чтобы узнать, как проверка работает в MVC.

0 голосов
/ 17 марта 2009

Нет компонентов, о которых я знаю. Вам нужно будет выполнить валидацию самостоятельно (или использовать updatemodel и т.

    if (String.IsNullOrEmpty(username))
    {
        ModelState.AddModelError("username", "You must specify a username.");
    }

Затем вернитесь к форме редактирования, и ошибки Состояния модели появятся в сводке проверки.

Существуют рамки проверки вроде xval , не уверены, что это то, что вы ищете?

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