jQuery将类作为POST参数发送

时间:2013-10-21 12:37:19

标签: ajax jquery c#-4.0 asp.net-mvc-4

我想将类作为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收到数据时为空!!但是在发送之前数据是正确的。

3 个答案:

答案 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参数中使用该类的名称。