我的视图模型值类型属性应该是可空的吗?

5

我已经将我的视图模型属性设为可空,有一段时间了。我的原因是,在验证发生时,我不希望默认值插入用户留空但需要的字段。

我使用required标记来标识必填字段,但这让我开始思考,通过这样做我失去了对象模型中很多精度。

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

当领域模型要求可空性时,我的视图模型属性应该是可空的吗?

1个回答

4

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

是的,为了正确执行视图模型的验证,它们应该是可为空的。当确保视图模型是有效的,并在映射层将此视图模型映射回实际的领域模型时,您将确定为此属性提供了值。


1
我理解文本字段的情况,但我指的是值类型,比如整数、日期时间等。如果你不将它们设为可空,那么在验证时会返回这些类型的默认值。 - Erik Funkenbusch
1
@Mystere Man,在HTML中不存在int、DateTime等概念...在HTML中,您只有文本类型的输入字段(当然还有其他类型)。这些输入字段表示字符串值,并且用户可以将其留空。因此,您应该设计您的视图模型以反映这一点。 - Darin Dimitrov
1
@Mystere Man,你说的“在视图模型中使用文本类型”是什么意思?如果你不使用可空类型,那么很难区分值类型的默认值(例如整数的0)和用户可能输入的空字符串。这就是为什么我建议在这种情况下使用可空整数的原因。至于你的领域模型,那就另当别论了=>它应该反映你的业务需求。 - Darin Dimitrov
1
@Robin van der Knaap,就我个人而言,我更喜欢为此情况使用自定义模型绑定器。 - Darin Dimitrov
@DarinDimitrov,经过10年,您的观点是否仍与您提供的答案相同?谢谢。 - Lukas
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接