Когда я начал использовать xVal для проверки на стороне клиента, я только реализовал методы действий, которые использовали объекты модели домена как viewmodel или встроенные экземпляры этих объектов в viewmodel.
Этот подход работает отлично в большинстве случаев, но есть случаи, когда представление должно отображать и отправлять обратно только подмножество свойств модели (например, когда пользователь хочет обновить свой пароль, но не остальную часть его данные профиля).
Один (уродливый) обходной путь состоит в том, чтобы иметь скрытое поле ввода в форме для каждого свойства, которое иначе не присутствует в форме.
По-видимому, лучшей практикой здесь является создание настраиваемой модели viewmodel, которая содержит только свойства, относящиеся к представлению, и заполняет viewmodel с помощью Automapper. Это намного чище, поскольку я переношу только данные, относящиеся к представлению, но это далеко не идеально, так как я должен повторять те же атрибуты проверки, которые уже присутствуют на объекте модели домена.
В идеале я хотел бы указать объект Domain Model как мета-класс через атрибут MetaData (это также часто называют "класс приятеля" ), но это не работает, поскольку xVal бросает, когда класс метаданных имеет свойства, которых нет в viewmodel.
Есть ли какое-нибудь элегантное обходное решение? Я рассматривал возможность взлома исходного кода xVal, но, возможно, есть и другой способ, который я до сих пор забыл.
Спасибо,
Адриан
Изменить: С появлением ASP.NET MVC 2 это не только проблема, связанная с атрибутами проверки, но также применимая к атрибутам редактора и отображения.