Если client validation
выполняется, когда необходимо сделать domain level validation
?
Я использую ASP.NET MVC
для своих веб-приложений. Мне нравится различать мои domain models
и view models
. Мое модели домена содержат данные, которые поступают из моей базы данных, а мои модели просмотра содержат данные о моих представлениях/страницах.
Предположим, что я работаю с данными о клиентах.
У меня будет таблица в моей базе данных под названием Customers
.
У меня будет класс клиентов, который может выглядеть примерно так:
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
И я создам модель представления клиента для представления только данных, которые у меня есть на моем представлении:
[Validator(typeof(CustomerCreateViewModelValidator))]
public class CustomerCreateViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
У меня будет представление create, которое принимает мой CustomerCreateViewModel
и связывает мои поля ввода с моей моделью просмотра:
@model MyProject.ViewModels.Customers.CustomerCreateViewModel
@using (Html.BeginForm())
{
<table>
<tr>
<td>
@Html.TextBoxFor(x => x.FirstName)
@Html.ValidationMessageFor(x => x.FirstName)
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(x => x.LastName)
@Html.ValidationMessageFor(x => x.LastName)
</td>
</tr>
</table>
<button id="SaveButton" type="submit">Save</button>
}
Как вы можете видеть, у меня есть CustomerCreateViewModelValidator
, который содержит мои правила проверки. После того, как пользователь ввел некоторые данные в текстовые поля, он нажмет кнопку отправки. Если некоторые из полей пустые, проверка не выполняется. Если все необходимые поля введены, то проверка завершается успешно. Затем я буду сопоставлять данные из модели моего представления с моей моделью домена следующим образом:
Customer customer = Mapper.Map<Customer>(viewModel);
Эта модель домена клиента я беру и передаю ее на мой уровень репозитория, и она добавляет данные в мою таблицу.
Когда нужно выполнить проверку на модели домена? Я выполняю всю мою проверку на моей модели представления. Я могу проверить свои данные в моей модели домена непосредственно перед тем, как добавить его в базу данных, но, увидев, что он был проверен на модели представления, не будет ли это просто повторением той же проверки на стороне клиента?
Неужели кто-то может поделиться некоторыми соображениями по этому вопросу?