如何使用Ajax和jquery将对象ID传递给操作方法
我的asp.net mvc视图中有以下字段:-如何使用Ajax和jquery将对象ID传递给操作方法,jquery,asp.net-mvc,asp.net-mvc-5,Jquery,Asp.net Mvc,Asp.net Mvc 5,我的asp.net mvc视图中有以下字段:- @foreach (var item in Model) { @Html.CheckBoxFor(model => item.CheckBoxSelection, new { @value = item.TMSServerID.ToString() }) } 我编写了以下jquery来选择复选框的值(如果选中):- $('body').on("click", "#transferSelectedServers", function
@foreach (var item in Model) {
@Html.CheckBoxFor(model => item.CheckBoxSelection, new { @value = item.TMSServerID.ToString() })
}
我编写了以下jquery来选择复选框的值(如果选中):-
$('body').on("click", "#transferSelectedServers", function () {
var boxData = [];
$("input[name='CheckBoxSelection']:checked").each(function () {
boxData.push($(this).val());
});
$.ajax({
type: "POST",
url: "@Url.Content("~/Server/DeleteSelected")",
data: { ids: boxData.join(",") }
})
});
我有以下的行动方法:-
[HttpPost]
[ValidateAntiForgeryToken]
public string DeleteSelected(string ids)
但当前传递给my action方法的值将是空字符串。您的控制器包含
ValidateAntiForgeryToken
属性。因为您没有在ajax请求中传递antiforgery令牌,所以您收到了一个错误
如果您检查您的响应主体,您可能会看到错误
所以你有两个选择
ValidateAntiForgeryToken
属性ValidateAntiForgeryToken
并将令牌与您的ID一起传递@Html.AntiForgeryToken()
这将生成一个像这样的隐藏字段
<input type="hidden" value="SSjplL_6t1bxDmb8qTdHcqX5ScafLxw4kmFMzc1dJ7T4kuXfL3aiDWIrwEjk9JKsUV4TGUsENKbRTRJ0W2zYLeHjmtCg02TZQBDevWeRYEA1" name="__RequestVerificationToken">
希望这有帮助 首先检查boxData数组的长度,然后再将其传递给ajax。可能是数组有问题且长度为零不确定是否不填充数组,但传递数组并将操作方法参数设置为
public string DeleteSelected(int[]ids)不是更容易吗{..
?-注意,您需要在ajax选项中设置traditional:true
,您是对的,这是导致问题的原因,但是有没有办法使用jquery传递反伪造令牌?
var token = $("input[name='__RequestVerificationToken']").val();
$.ajax({
type: "POST",
url: "@Url.Content("~/Server/DeleteSelected")",
data: { ids: boxData.join(","), __RequestVerificationToken: token }
})