Модель пользовательского представления Asp.net mvc 2: куда пойдут атрибуты проверки? - PullRequest
1 голос
/ 03 августа 2010

До сих пор я жаловался на ОК с использованием аннотаций данных, сделанных на классах друзей.

Когда речь идет о более сложном представлении, для которого требуется настраиваемая модель представления - например, включающая несколько списков выбора ... нужно ли мне затем передавать свои атрибуты проверки в класс модели представления?

Я планировал передать полностью настраиваемую модель представления для заполнения представления «Редактировать», но надеялся получить простой объект в моем действии «Сохранить».

Где недостатки в этом плане, или все это всего лишь одна большая куча неудач?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 03 августа 2010

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

Редактировать
Примечание:это не имеет ничего общего с вашим вопросом

Я лично предпочитаю расширять исходную модель для всего, что связано с «Редактированием», и я предпочитаю использовать ViewModel только для «Отображения» (страницы сведений,Страницы списка и т. Д.).

Пример: вот мой класс собеседника, и в него я добавил свойство RegionName, которое я использую в окне редактирования страницы, но оно не имеет ничего общего сбаза данных.Вы можете сделать то же самое с пользовательскими входными данными, которые вы хотите проверить, прежде чем манипулировать ими с данными, «пригодными для использования в базе данных».Я использую RegionID в базе данных, но я предпочитаю использовать понятное имя для посетителя вместо идентификатора integer

<MetadataType(GetType(UserMetaData))> _ 
Partial Public Class User 
    Public RegionName As String 
End Class 

Public Class UserMetaData 

    <DisplayName("region name")> _ 
    <Required(ErrorMessage:="region name is required.")> _  
    Public Property RegionName As String 
End Class
1 голос
/ 03 августа 2010

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

на самом деле, я помещаю атрибуты как частичный класс, а не как модель, потому что 90% времени моя модель приходит из файла linq 2 sql в моем хранилище данных

мой контроллер просто проверяет, является ли модель действительной или нет, и представление ничего не делает, кроме отображения данных и ошибок на самом деле.

неуверен, что это то, что вы спрашиваете, хотя

1 голос
/ 03 августа 2010

Ваша модель представления все еще будет наследовать проверку от вашей базовой модели.

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