gpt4 book ai didi

asp.net - 数据注释应该在模型还是 View 模型上?

转载 作者:行者123 更新时间:2023-12-04 01:47:55 26 4
gpt4 key购买 nike

我已经习惯用数据注释属性来装饰数据模型类,但我的纯粹主义者稍微拒绝在此处包含纯粹的表示属性,例如显示格式。但是,我很高兴在这里保留以验证为中心的属性。我必须继续在数据模型中保留所有注释等的一个很好的理由是我的 View 模型聚合了数据模型类,例如我的 ViewModelBase.DetailItem<TEntity> View 模型中的属性只是对我的数据模型中实体类的引用。如果我想将展示性注释移动到 View 模型中,我将不得不彻底修改我的设计,在我的 View 模型中复制数据模型属性并使用对象映射工具来填充基于数据模型对象的 View 模型对象。

我应该在哪里做我的数据注释?

顺便说一句,这就是我的草稿ViewModelBase好像:

public class ViewModelBase<T>
{
public virtual string PageTitle { get; set; }
public virtual string ViewHeading { get; set; }

public virtual ViewMode ViewMode { get; set; }
public virtual IEnumerable<T> ItemList { get; set; }
public virtual T DetailItem { get; set; }
}

最佳答案

我对 DRY 主体和验证有同样的担忧,这就是为什么我更喜欢在模型中保留大多数验证要求。但为什么必须是其中之一呢?模型验证属于模型,但某些特定于 View 的验证属于 View 模型。

话虽如此,数据注释只是:围绕数据的注释。不正确的验证逻辑。验证逻辑是与数据注释完全不同的概念(Required 属性只是验证的一个方面)。我个人发现很难在 MVVM 实现中放置真正的验证,因为某些验证需要上下文,而不仅仅是需要与否。

简短回答:如果它在您的模型中,那么它会聚合到您的 View 模型中。如果有特定于 View 的要求,则 View 模型可以在需要时满足其他要求。

关于asp.net - 数据注释应该在模型还是 View 模型上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com