MVC3好友类,ViewModels和验证

时间:2011-07-04 16:19:47

标签: validation asp.net-mvc-3 viewmodel data-annotations buddy-class

我目前正在开展我的第一个MVC项目,这个项目仅仅是为了我自己的学习目的而得到的美化博客。我开始使用数据库优先方法,因为我不知道代码优先甚至在那时存在。这让我对如何处理验证感到困惑。

我在数据库中有一个Articles表,它有一个由EF为我生成的相应Article类。我还有一个ArticleViewModel类,它具有Article中每个属性的匹配属性。虽然我有简单的CRUD操作,但它们目前使用强类型Article模型而不是ArticleViewModel,并且没有进行数据验证。

在今天进行一些研究以评估我的选项后,我发现了following questionsthis博文。所以看起来我可以将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 个答案:

答案 0 :(得分:3)

是的,我最近了解到这种方法!这是一个很好的做法,只要你不介意附加的代码。有关详细信息和代码示例的已接受答案,请参阅Where do you put your validation in asp.net mvc 3?