控制器中的参数始终为空

时间:2018-05-04 11:38:11

标签: ajax asp.net-mvc

我发送给控制器的参数始终为空。

   $("#btnSilviPrioInvoiceGenerate").on("click", function (e) {

            var idSelector = function () { return this.id; };
            var selectedDamages = $(":checkbox:checked").map(idSelector).get();
            console.log(selectedDamages);

             var action_url = '@Url.Action("GenerateInvoiceDamage", "TimberMonitor", new { Area = "", ids = "CMP_ID" })';
             action_url = action_url.replace("CMP_ID", selectedDamages);
            window.location = action_url;
        });

我需要将selectedDamages列表(包含id列表)发送到控制器,但在控制器中,ids参数始终为null。

enter image description here

我试图在控制器方法中将参数类型更改为List<string>。我已经检查过控制器和视图中参数的名称。 我可以检查什么才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

由于selectedDamages的值是一个数组,因此您需要生成查询字符串为?ids=x&ids=y&ids=z的网址,并且方法中的参数必须为IEnumerable<T>,例如

public ActionResult GenerateInvoiceDamage(IEnumerable<string> ids)

要生成查询字符串,可以使用jQuery param()函数

var baseUrl = '@Url.Action("GenerateInvoiceDamage", "TimberMonitor", new { Area = "" })';
var url = baseUrl + '?' + $.param({ ids: selectedDamages }, true);
location.href = url;