我发送给控制器的参数始终为空。
$("#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。
我试图在控制器方法中将参数类型更改为List<string>
。我已经检查过控制器和视图中参数的名称。
我可以检查什么才能使其正常工作?
答案 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;