模型使用可为空的值,例如
public Nullable<int> Price { get; set; }
添加新记录时一切正常,价格不是必填字段,因此将在数据库中保存为 Null 值。
如果我修改现有记录,假设我想将 price 的值从 10 更改为空白。然后我得到一个验证错误。
验证错误:“价格”必须是介于 -2147483648 和 2147483647 之间的整数
但是这个字段不是必需的,所以我希望它只保存一个空值?
模型使用可为空的值,例如
public Nullable<int> Price { get; set; }
添加新记录时一切正常,价格不是必填字段,因此将在数据库中保存为 Null 值。
如果我修改现有记录,假设我想将 price 的值从 10 更改为空白。然后我得到一个验证错误。
验证错误:“价格”必须是介于 -2147483648 和 2147483647 之间的整数
但是这个字段不是必需的,所以我希望它只保存一个空值?
发生这种情况是因为空文本框值为""(空字符串),但不是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" />
希望能帮助到你。