【问题标题】:select2 sending null params to controllerselect2 向控制器发送空参数
【发布时间】:2020-01-24 22:52:03
【问题描述】:

我正在尝试使用带有 ajax 调用的 select2 多选来检索数据并根据用户输入进行过滤,但是当它到达控制器时,参数为空。不幸的是(我认为因为它是自定义的 select2 api)我不能在 ajax 调用中放置一个 chrome 断点来弄乱它,但是 URL 在网络选项卡上看起来很好。现在,ajax 调用的编写方式略有不同,因为我一直在尝试不同的解决方案;都不行。

我也试过这个帖子,他说它有效,但对我来说没有骰子: jquery-select2 always sends null params in controller

$(".filter-agencies").select2({
            //data: agencies,
            ajax: {
                cache: false,
                datatype: 'JSON',
                type: 'GET',
                url: 'Home/GetFilterAgency',
                data: function (params) {
                    return {q:params}
                },
                processResults: function (data) {
                    return {
                        results: data
                    }
                }
            },
            placeholder: 'Agencies',
            width: '150',
            multiple: true,
            closeOnSelect: false,
            minimumInputLength: 4
            ////tags: true
        });

         $(".filter-advertisers").select2({
            //data: filterSelect,
            ajax: {
                url: 'Home/GetFilterAdvertiser',
                data: function (params) {
                    var query = {
                        search: params.term
                    }
                    return query
                },
                processResults: function (data) {
                    //advertisers = $.map(data, function (obj) {
                    //    obj = { id: i, text: obj }

                    //    i = i + 1;
                    //    return obj
                    //})
                    return {
                        results: data
                    }
                }
            },
            placeholder: 'Advertisers',
            closeOnSelect: false,
            minimumInputLength: 4,
            allowClear: true,
            width: '150',
            multiple: true
        });



        [HttpGet]
        public string GetFilterAdvertiser(string query)
        {
            var x = _orderedLinesProcessor.GetFilterAdvertiser();
            var i = 0;
            var dict = new Dictionary<int, string>();
            foreach (var el in x)
            {
                dict.Add(i, el);
                i += 1;
            }

            return JsonConvert.SerializeObject(dict);
        }

【问题讨论】:

    标签: c# jquery .net asp.net-mvc jquery-select2


    【解决方案1】:

    将查询更改为在控制器中搜索:

    public string GetFilterAdvertiser(string search)

    【讨论】:

    • 这是解决方案,奇怪的是它不在文档中。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-04-19
    • 2010-12-05
    • 2017-10-31
    • 2011-07-03
    • 2021-02-14
    • 1970-01-01
    • 2014-12-23
    • 2019-05-07
    相关资源
    最近更新 更多