Классы друзей MVC3, ViewModels и валидация - PullRequest
2 голосов
/ 04 июля 2011

В настоящее время я работаю над своим первым проектом MVC, который представляет собой не что иное, как прославленный блог для моих собственных учебных целей. Я начал с подхода, основанного на базе данных, так как понятия не имел, что код сначала существовал. Это оставило меня в некотором замешательстве относительно того, как мне следует обращаться с валидацией.

У меня есть таблица Articles в базе данных, которая имеет соответствующий класс Article, который был сгенерирован для меня EF. У меня также есть класс ArticleViewModel, у которого есть соответствующее свойство для каждого из свойств в Article. Хотя у меня работают простые операции CRUD, в настоящее время они используют строго типизированную модель Article вместо ArticleViewModel, и проверка данных не выполняется.

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

[MetadataType(typeof(ArticleViewModel))]
public partial class Article
{
    public Article(ArticleViewModel avm)
    {
        // Copy the properties from the ArticleViewModel into an Article.
    }
}

Затем примените DataAnnotations к ArticleViewModel по мере необходимости и обновите мои контроллеры / представления для использования ArticleViewModel?

Заранее спасибо за любой вклад. :)

1 Ответ

3 голосов
/ 04 июля 2011

Да, я недавно узнал об этом подходе! и это хорошая практика, если вы не возражаете против дополнительного кода. См. Где вы положили подтверждение в asp.net mvc 3? для получения более подробной информации и принятого ответа для примера кода.

...