我想将类作为post ajax参数发送。
我的班级:
public class PageInput
{
public string ActionName { get; set; }
public string Controller { get; set; }
public int CountPage { get; set; }
public int CountRecordInPage { get; set; }
public KeyValuePair<string, short> No { get; set; }
}
ajax代码:
$.ajax({
url: '@Url.Action("GetPageNumbers", "MyClasses")',
data: '@Model.PageInput',
success: function (data) {
alert(data);
}
});
行动:
public ActionResult GetPageNumbers(PageInput pageInput)
{
return PartialView("_PagingNumbers", pageInput);
}
不起作用。但为什么呢?
当actionResult收到数据时为空!!但是在发送之前数据是正确的。
答案 0 :(得分:2)
您需要在JavaScript代码中创建一个对象,然后发送它:
$.ajax({
url: '@Url.Action("GetPageNumbers", "MyClasses")',
data: {
ActionName: '@Model.ActionName',
Controller: '@Model.Controller',
CountPage: @Model.CountPage,
CountRecordInPage: @Model.CountRecordInPage,
},
success: function (data) {
alert(data);
}
});
您还需要将[HttpPost]
属性添加到控制器操作
答案 1 :(得分:0)
我的猜测是你没有张贴到url
$.ajax({
url: '@Url.Action("GetPageNumbers", "MyClasses")',
data: '@Model.PageInput',
type: 'POST',
success: function (data) {
console.info(data);
}
});
现在它会发布。
答案 2 :(得分:0)
你应该使用以下模式:
$.ajax({
url: '@Url.Action("GetPageNumbers", "MyClasses")',
data: {"PageInput.CountPage": "@Model.PageInput.CountPage", "PageInput.CountRecordInPage":"@Model.PageInput.CountRecordInPage" },
success: function (data) {
alert(data);
}
});
我认为这对你有用。在Ajax发布时,您必须在AJAX post参数中使用该类的名称。