Если 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; }
}
у меня будет создать вид, что принимает мой 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);
Этот клиент я взять и передать его на моем хранилище слой, и он добавляет данные в моей таблице.
Когда проверка подлинности должна выполняться на модели домена? Я выполняю всю мою проверку на моей модели представления. Я могу проверить свои данные в моей модели домена непосредственно перед тем, как добавить ее в базу данных, но, увидев, что она была проверена на модели представления, не будет ли она просто повторять ту же проверку на стороне клиента?
Не могли бы вы поделиться некоторыми сведениями по этому вопросу?
У вас есть отдельные правила проверки между слоями? Под этим я имею в виду, возможно ли иметь что-то действительное в пользовательском интерфейсе, которое не считается действительным в домене? –
В настоящий момент оба должны быть одинаковыми. Я обобщаю о проверках, а не только о моих проектах. –
Я бы хотел, чтобы DDD наклонялся к методу 'Validate()' для каждого объекта домена, который проверяет себя. Однако я далек от эксперта DDD. +1 за интересный вопрос. –