1

模型使用可为空的值,例如

public Nullable<int> Price { get; set; }

添加新记录时一切正常,价格不是必填字段,因此将在数据库中保存为 Null 值。

如果我修改现有记录,假设我想将 price 的值从 10 更改为空白。然后我得到一个验证错误。

验证错误:“价格”必须是介于 -2147483648 和 2147483647 之间的整数

但是这个字段不是必需的,所以我希望它只保存一个空值?

4

1 回答 1

4

发生这种情况是因为空文本框值为""(空字符串),但不是null

因此,在设置新值之前,您应该检查 value 是否为空字符串,如果是 -手动分配null 。


淘汰赛更新。您可以编写自定义 ko 绑定,这将为您完成一切。这是示例(可能不是最好的示例):

Javascript:

ko.bindingHandlers.nullableValue = {
  init: function (element, valueAccessor, allBindingsAccessor) {
    var underlyingObservable = valueAccessor();
    var interceptor = ko.dependentObservable({
        read: underlyingObservable,
        write: function (value) {
            if (value == '') {
                underlyingObservable(null);
                return;
            }
            underlyingObservable(value);
        }
    });
    ko.bindingHandlers.value.init(element, function () { return interceptor; }, allBindingsAccessor);
  },
  update: ko.bindingHandlers.value.update
};

html

<input type="text" data-bind="nullableValue: myNullableProperty" />

希望能帮助到你。

于 2013-03-17T19:34:52.717 回答