2

我目前正在开发我的第一个 MVC 项目,这只不过是一个用于我自己学习目的的美化博客。我从数据库优先的方法开始,因为那时我什至不知道代码优先的存在。这让我对如何处理验证有些困惑。

我在数据库中有一个表,它有一个由 EF 为我生成Articles的相应类。Article我还有一个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

提前感谢您的任何意见。:)

4

1 回答 1

3

是的,我最近了解到这种方法!这是一个很好的做法,只要您不介意涉及的附加代码。请参阅您将验证放在 asp.net mvc 3 的什么位置?有关更多详细信息和代码示例的公认答案。

于 2011-07-04T16:52:53.247 回答