0

我有一个相当复杂的 ViewModel 包含decimal属性,这些属性以文本框的形式向用户公开。我想要一个没有值的文本框被解释为零。(底层域对象中的属性不可为空,默认值为 0。)

DefaultModelBinder将视图数据绑定到 ViewModel 时,输入的空白​​字符串的十进制属性被初始化为零(在 .NET 中是标准的),但是DefaultModelBinder会在空白文本框的 ModelState 中添加错误。结果,ModelState 无效,用户看到一大堆“需要 A 值”。他们留空的文本框的错误。

如何阻止这些错误被添加到 ModelState?

4

1 回答 1

1

在这种情况下,您可以做的最好的事情是创建一个 ViewModel。与其直接绑定到您的领域模型,不如绑定到仅为将数据传输到您的视图而创建的 ViewModel。在 ViewModel 上,您可以将这些字段创建为可为空的小数。然后,您可以根据需要将 ViewModel 映射回您的域模型。

这确实是正确的行为。如果您在 TextBox 中不输入任何内容,则这相当于 null,而不是 0。

于 2009-07-06T16:19:31.887 回答