繁体   English   中英

用于ajax调用的ASP.NET控制器方法

[英]ASP.NET controller method for ajax call

我有一个包含多选字符串列表的页面。 当我选择多个项目并点击应用时,我想进行ajax调用并传递值。 当我在控制器中调试方法时,参数为空。

家庭控制器

[HttpGet]
public string GetTopLogEvents(string[] filters)
{
    // ........
    return "";
}

scripts.js

$('.js-event-level-filter-apply').on('click', function() {
    var $this = $(this);
    var $filterList = $('.js-event-level-filter');
    var filters = $filterList.val();

    var obj = {
        filters: []
    };

    $.each(filters, function(key, value) {
        obj.filters.push(value);
    });

    $.ajax({
        type: "GET",
        url: '/Home/GetTopLogEvents',
        data: obj.filters,
        success: function(data) {
            console.log(data);
        }
    });
});

如果我在控制器中放置一个断点,它将命中,但过滤器为空。 我究竟做错了什么?

可能是您需要“字符串化”您的数组。

我首先将ajax数据部分更改为如下所示:

data: {filters: obj.filters}

如果那行不通,我会尝试

data: {filters: stringify(obj.filters)} 

后者的确切语法可能不正确,因此请检查一下。

您能打开浏览器,按F12键,然后在$ .ajax行上直接放置一个断点吗(在“源”选项卡中的文件中)。 然后,运行该方法。 当线程在断点处停止时,是否可以打开控制台选项卡,并键入“ obj.filters”并按Enter。

它说“未定义”吗?

查看您的代码,它“应该”是不确定的,但是那肯定是一个好的开始。

同样,对发送的信息进行字符串化(JSON.stringify()),然后执行JObject调用(c#)将其转换回对象数组也可能有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM