【问题标题】:Different model validation scenarios不同的模型验证场景
【发布时间】:2013-03-05 15:53:52
【问题描述】:

我的应用程序中有一个用户实体,用户在注册应用程序时输入一些基本信息。如果他们想使用一些高级功能,他们必须提供完整的信息。

所以我有两个验证场景。

我的第一种方法是将Required 属性与MyRequired 属性交换,以避免通过实体框架在数据库中将列创建为 NOT NULL。

但是如果我将模型添加到我的数据库上下文中,它就会得到验证。因此,如果只是填充了基本信息,我无法添加实体。

有没有办法让一个实体具有多个不同的验证场景

【问题讨论】:

    标签: asp.net-mvc entity-framework ef-code-first


    【解决方案1】:

    有什么方法可以验证具有不同场景的模型吗?

    这就是视图模型应该做的。我建议您避免将 EF 模型传递给视图。还要避免将 EF 域模型传递给您的操作 => 始终使用视图模型。这些类是专门为满足给定视图的要求而设计的,包括验证属性。然后将您的模型实体映射到您的视图模型。

    通过这种方式,您的域模型与信息在给定视图上的呈现方式完全分离。此外(就像你的情况一样)同一个域模型在不同的视图上可能有两种不同的表示形式,当然还有不同的验证要求 => 视图模型填补了这个空白。

    【讨论】:

    • 如果视图模型使用相同的优先级名称,是否有任何简单的方法可以将视图模型映射到实体?
    • @Michael,是的,我个人为此使用AutoMapper。我在许多项目中都使用它,它的表现也很好。
    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多