【问题标题】:MVC3 Buddy Classes, ViewModels and ValidationMVC3 好友类、视图模型和验证
【发布时间】:2011-07-04 16:19:47
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 如果在视图中使用具有外键的复杂表作为模型并将该视图提交回来进行处理,是否会对性能产生影响?通常我创建仅用于视图的模型,然后将该模型发送/加载到我的数据层/从我的数据层发送/加载,并根据需要对其进行转换。我最近了解到这一点,但经过检查,该模型包含有关 LINQ2SQL 和所有钻取表的所有信息......?使用这种做法是否会导致每分钟 1000 次页面浏览量更糟?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多