【发布时间】:2011-07-04 16:19:47
【问题描述】:
我目前正在开发我的第一个 MVC 项目,该项目只不过是一个用于我自己学习目的的美化博客。我从数据库优先的方法开始,因为那时我什至不知道代码优先的存在。这让我对如何处理验证有些困惑。
我在数据库中有一个Articles 表,它有一个相应的Article 类,它是由EF 为我生成的。我还有一个ArticleViewModel 类,它对Article 中的每个属性都有一个匹配的属性。虽然我有简单的 CRUD 操作,但他们目前使用的是强类型 Article 模型而不是 ArticleViewModel,并且没有进行数据验证。
今天做了一些研究以评估我的选择后,我找到了 following questions 和 this 博客文章。所以看起来我可以将 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?
提前感谢您的任何意见。 :)
【问题讨论】:
标签: validation asp.net-mvc-3 viewmodel data-annotations buddy-class