Я использую ASP.NET MVC 2 и использую модель представления для подхода представления. Я также использую Automapper для отображения свойств из моей доменной модели в модель представления.
Возьмем этот пример модели представления (с Обязательными атрибутами аннотации данных для проверки):
public class BlogPost_ViewModel
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
[Required]
public string Text { get; set; }
}
В режиме редактирования сообщений я использую текстовый редактор (CKeditor). Поскольку CKeditor является редактором HTML, в идеале мне нужно, чтобы CKeditor HTML кодировал ввод пользователя при отправке формы, чтобы проверка ввода ASP.NET не вызывала жалоб. Это не проблема, поскольку в CKeditor встроена эта функциональность, однако мне необходимо декодировать выходные данные CKeditor перед отображением обратно в объект домена (через Automapper).
Я хочу добавить новое свойство (в модель представления выше), чтобы решить эту проблему следующим образом:
public string HTMLEncodedText {
get { return HTMLEncode(Text); }
set { Text = HTMLDecode(value); }
}
Затем я могу привязать это свойство к CKeditor в представлении, но по-прежнему использовать Automapper для сопоставления свойства «Текст» в контроллере - и все это без необходимости выключать проверку ввода.
У меня вопрос: знаете ли вы, как работает процесс связывания и проверки модели в ASP.NET MVC 2? Связаны ли все свойства модели перед проверкой? Или каждое отдельное свойство проверяется при его установке. Я думаю, что в идеале, чтобы моя идея работала, все свойства должны быть установлены до проверки модели.