. net MVC:如何让模型绑定器将null赋值给list属性
本文关键字:null 赋值 属性 list 绑定 MVC 模型 net | 更新日期: 2023-09-27 17:50:59
我有一个这样的模型:
class Model {
public IList<Item> Items { get; set; }
}
class Item { public int Id { get; set; } }
我正在向一个以Model为参数的操作方法发送请求。该请求包含以下键值对:"Items=" (i. e.
Items=null
"。默认的模型绑定器将Items设置为1个null
项的列表,其中我希望列表属性本身为null
(或至少为空)。
有办法做到这一点吗?
显然,我可以做某种自定义模型绑定,但我更喜欢使用默认模型绑定(可能修改请求的格式)的解决方案。
你可以给类添加一个你想要的行为的属性。
public property MySanitizedItemsList
{
get
{
if (Items.Length == 1 && Items[0] == null)
return null
else
return Items;
}
}
假设您使用jQuery,我将对其进行扩展,使其能够将表单序列化为对象
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
然后我可以简单地将表单放入一个变量中:
var data = $('form').serializeObject();
做我的测试来知道我是否想要删除一个属性
if(true){
delete data.Items;
}
然后使用ajax正常提交数据。