Поделиться через


Добавление проверки в модель — реализация поддержки, необходимой для включения проверки входных данных

Скотт Хансельман (Scott Hanselman)

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

В этом разделе мы реализуем поддержку, необходимую для включения проверки входных данных в приложении. Мы убедимся, что содержимое базы данных всегда верно, и предоставим пользователям полезные сообщения об ошибках при попытке ввести недопустимые данные movie. Начнем с добавления логики проверки в класс Movie.

Щелкните правой кнопкой мыши папку Модель и выберите Добавить класс. Присвойте классу имя Movie.

Когда мы создали модель сущностей Movie ранее, интегрированная среда разработки создала класс Movie. На самом деле часть класса Movie может находиться в одном файле, а часть — в другом. Это называется разделяемым классом. Мы собираемся расширить класс Movie из другого файла.

Мы создадим разделяемый класс movie, указывающий на "класс buddy" с некоторыми атрибутами, которые будут давать проверочный подсказки системе. Мы помечаем название и цену как обязательные, а также настаиваем на том, чтобы цена была в определенном диапазоне. Щелкните правой кнопкой мыши папку Models и выберите Добавить класс. Присвойте классу имя Movie и нажмите кнопку ОК. Вот как выглядит наш разделяемый класс Movie.

using System.ComponentModel.DataAnnotations;

namespace Movies.Models
{
    [MetadataType(typeof(MovieMetadata))]
    public partial class Movie
    {
        class MovieMetadata
        {
            [Required(ErrorMessage="Titles are required")]
            public string Title { get; set; }

            [Range(5,100,ErrorMessage ="Movies cost between $5 and $100.")]
            public decimal Price { get; set; }
        }
    }
}

Re-Run приложение и попробуйте ввести фильм с ценой более 100. После отправки формы появится сообщение об ошибке. Ошибка перехватывается на стороне сервера и возникает после того, как форма будет POSTed. Обратите внимание, что встроенные вспомогательные функции HTML ASP.NET MVC были достаточно умными для отображения сообщения об ошибке и сохранения значений в элементах текстового поля:

CreateMovieWithValidation

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

Давайте включим проверку на стороне клиента с помощью JavaScript.

Добавление клиентской проверки

Так как класс Movie уже имеет некоторые атрибуты проверки, нам нужно просто добавить несколько файлов JavaScript в шаблон Представления Create.aspx и добавить строку кода, чтобы обеспечить проверку на стороне клиента.

В VWD перейдите в папку Views/Movie и откройте Файл Create.aspx.

Откройте папку Scripts в Обозреватель решений и перетащите следующие три скрипта в <тег head>.

  • MicrosoftAjax.js
  • MicrosoftMvcValidation.js

Вы хотите, чтобы эти файлы скриптов отображались в указанном порядке.

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>

Кроме того, добавьте одну строку над html.BeginForm:

<% Html.EnableClientValidation(); %>

Ниже приведен код, показанный в интегрированной среде разработки.

Фильмы — Microsoft Visual Web Developer 2010 Express (10)

Запустите приложение, перейдите в раздел /Movies/Create еще раз и нажмите кнопку Создать, не вводя никаких данных. Сообщения об ошибках отображаются немедленно без флэш-памяти страницы, которую мы связываем с отправкой данных на сервер. Это связано с тем, что ASP.NET MVC теперь выполняет проверку входных данных как на клиенте (с помощью JavaScript), так и на сервере.

Создание — Windows Internet Обозреватель

Это хорошо выглядит! Теперь добавим в базу данных еще один столбец.