【问题标题】:Should my viewmodel value type properties be nullable?我的视图模型值类型属性应该可以为空吗?
【发布时间】:2011-08-26 21:04:08
【问题描述】:

我已经让我的 viewmodel 属性可以为空已经有一段时间了。我的理由是,当验证发生时,我不希望将默认值插入用户留空但需要的字段中。

当然,我用 required 标记了我的必填字段,但这让我想到这样做我在对象模型中失去了很多保真度。

当然,我的域类只有在它们实际上可以为空时才可以为空。

当域模型需要时,我的视图模型属性是否应该可以为空?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 viewmodel


    【解决方案1】:

    当域模型需要时,我的视图模型属性是否应该可以为空?

    是的,他们应该为了正确地对视图模型执行验证。当您确保视图模型有效并将此视图模型映射回映射层中的实际域模型时,您将确定将为该属性提供一个值。

    【讨论】:

    • 这就是我一直这样做的原因。但似乎我们通过使某些东西既可以为空又需要它而损失了很多。
    • 我理解文本字段的情况,但我指的是值类型,如整数、日期时间等。如果你不让它们可以为空,那么在验证时它会返回默认值对于那些。
    • @Mystere Man,在 HTML 中没有整数、日期时间等概念……在 HTML 中,您有文本类型的输入字段(当然还有其他类型)。这些输入字段表示字符串值,用户可以将其留空。因此,您应该以反映这一点的方式设计您的视图模型。
    • @Mystere Man,你说的在视图模型中使用文本类型是什么意思?如果您不使用可空类型,您将很难区分值类型的默认值(例如整数的 0)和用户可以输入的空字符串。这就是我建议您在这种情况下使用可空整数的原因。就您的领域模型而言,那是另一回事 => 它会反映您的业务需求。
    • @Robin van der Knaap,我个人更喜欢这种情况下的自定义模型绑定器。
    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2015-04-15
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    相关资源
    最近更新 更多