.NET MVC:如何获取模型绑定指定空的列表属性?(.NET MVC: how to get th

2019-10-17 13:38发布

我有像这样的模型:

class Model {
    public IList<Item> Items { get; set; }
}

class Item { public int Id { get; set; } }

我送给带有模型作为参数的操作方法的请求。 该请求包含下列键-值对:“ Items=" (ie Items=null )。 默认的模型绑定设置项为1的列表null项,在这里我想列表属性本身是null的(或至少是空的)。

有没有办法做到这一点?

很显然,我可以做一些定制模型绑定的,但我更喜欢一个解决方案,将工作使用默认的模型粘合剂(也许修改请求的格式)。

Answer 1:

你可以将属性添加到你想要的行为的类。

public property MySanitizedItemsList
{
    get
    {
        if (Items.Length == 1 && Items[0] == null)
            return null
        else
            return Items;
    }
}


Answer 2:

假设你使用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提交数据的正常进行。



文章来源: .NET MVC: how to get the model binder to assign null to a list property?