Способы проверки достоверности данных
Валидация данных в приложениях ASP.NET MVC Framework
Поскольку платформа ASP.NET MVC Framework предлагает модель разработки, отличную от ASP.NET Web Forms, использование элементов управления становится невозможным. Поскольку валидаторы ASP.NET – это элементы управления, содержащие логику проверки значений, этот способ применять в приложениях на базе ASP.NET Web Forms нельзя. Поэтому при разработке приложений на основе ASP.NET MVC Framework предлагается иной подход.
Процесс валидации ASP.NET MVC Framework заключается в следующем. При обработке действия контроллера, контроллер определяет какие именно значения не являются корректными и почему. После этого контроллер агрегирует информацию об ошибках, которая впоследствии передается представлению. Представление в процессе генерации пользовательского интерфейса имеет возможность сообщить пользователю об ошибках на странице.
Для хранения информации об ошибках в базовом классе контроллера определен объект ModelState. Используя этот объект, контроллер имеет возможность передать представлению информацию об ошибках на странице.
Если при обработке запроса контроллер обнаруживает ошибку, он должен вызвать метод AddModelError объекта ModelState, в котором указать имя поля, содержащее ошибку и комментарии, которые должны отобразиться пользователю. После выполнения проверки корректности значений для всех параметров, контроллер должен проверить свойство IsValid объекта ModelState. Если объект ModelState содержит хотя бы одно сообщение об ошибке, свойство IsValid будет принимать значение "false"; в противном случае свойство "IsValid" примет значение "true".
Предположим, что требуется разработать приложение, которое создает запись в базе данных. Предварительно следует проверить пользовательский ввод. В этом случае программный код действия контроллера будет выглядеть следующим образом.
Как видно из приведенного фрагмента кода, логика обработки запроса не выполняется, если страница содержит хотя бы одну ошибку.
Для отображения информации об ошибке в рамках представления используются вспомогательные методы ValidationMessage и ValidationSummary.
Метод ValidationSummary отображает полный список ошибок, которые допустил пользователь при вводе информации. Данный метод не содержит параметров и использует объект ModelState для получения информации об ошибках на странице.
Если в какой-то части страницы требуется отобразить информацию об ошибке для конкретного поля, то следует воспользоваться методом ValidationMessage. Этот метод принимает в качестве параметра имя поля, для которого необходимо отобразить информацию об ошибке. Имя определяется при добавлении информации об ошибке в объект ModelState посредством метода AddModelError. Первый параметр метода AddModelError содержит это имя. Если при вызове метода ValidationMessage больше никаких параметров не задано, то в качестве сообщения об ошибке будет использоваться сообщение, заданное при вызове метода AddModelError объекта ModelState. Можно явно указать сообщение об ошибке при вызове метода ValidationMessage, определив его во втором параметре этого метода.
Логика работы метода ValidationMessage определена следующим образом. Если для поля, для которого вызывается этот метод есть информация об ошибке в объекте ModelState, то в месте вызова метода ValidationMessage появляется информация об ошибке; если поле не содержит ошибок (объект ModelState не содежит информации об ошибках для этого поля), то в месте вызова метода ValidationMessage не появляется никакого сообщения.
Таким образом, для приведенного ранее контроллера можно создать следующее представление.
Как видно из приведенной разметки, в начале формы присутствует информация о всех ошибках на странице (вызов метода ValidationSummary), после чего идет определение всех полей, с информацией об ошибке для каждого поля. Аналогичным образом можно определить собственную логику для своих полей ввода.
Таким образом, модель разработки приложения на базе платформы ASP.NET MVC Framework предлагает альтернативный подход к процессу валидации данных, введенных пользователем.
Краткие итоги
Использование валидаторов в приложениях на базе ASP.NET MVC Framework невозможно, поскольку модель разработки на платформе ASP.NET MVC Framework предполагает иные подходы и не позволяет использовать элементы управления. Для осуществления процесса валидации в приложении на базе ASP.NET MVC Framework используется объект ModelState, в котором собирается вся информация об ошибках. Для добавления информации об ошибке в объект ModelState используется метод AddModelError. Процесс валидации осуществляется в действии контроллера. Для отображения информации об ошибках в представлении используются два основных метода – ValidationSummary и ValidationMessage. Метод ValidationMessage позволяет отобразить информацию об ошибке для конкретного поля. Метод ValidationSummary позволяет отобразить информацию о всех ошибках, которые присутствуют на странице.
Контрольные вопросы
- Что такое валидация данных?
- Почему необходимо выполнять проверку данных, введенных пользователем?
- Какие виды валидации существуют для веб-приложений?
- Чем серверная валидация отличается от клиентской?
- Каким образом осуществляется валидация в приложениях на базе ASP.NET Web Forms?
- Что такое валидаторы?
- Какие существуют типы валидаторов и чем они отличаются друг от друга?
- Как валидатор определяет какой именно элемент управления следует проверять?
- Каким образом осуществляется валидация в приложениях на базе ASP.NET Web Forms?
- Для чего необходим объект ModelState?
- Каким образом можно отобразить информацию об ошибках в представлении ASP.NET MVC Framework?