我有像这样的模型:
class Model {
public IList<Item> Items { get; set; }
}
class Item { public int Id { get; set; } }
我送给带有模型作为参数的操作方法的请求。 该请求包含下列键-值对:“ Items=" (ie
Items=null
)。 默认的模型绑定设置项为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提交数据的正常进行。