模型使用可以为空的值,例如
public Nullable<int> Price { get; set; }
添加新记录时,一切正常,Price不是必填字段,因此将在数据库中保存为Null值。
如果我修改现有记录,假设我想将价格值从10更改为空白。然后我收到验证错误。
验证错误:'价格'必须是-2147483648和2147483647之间的整数
但是这个字段不是必需的,所以我希望它只保存一个空值?
答案 0 :(得分:4)
这是因为空文本框值为“”(空字符串),但不是 null 。
因此,在设置新值之前,您应检查value是否为空字符串,如果是,请手动分配 null 。
Knockout更新。 您可以编写自定义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" />
希望它有所帮助。