3

我想将类作为后 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({
        url: '@Url.Action("GetPageNumbers", "MyClasses")',
        data: '@Model.PageInput',
        success: function (data) {
            alert(data);
        }
    });

行动 :

 public ActionResult GetPageNumbers(PageInput pageInput)
    {
        return PartialView("_PagingNumbers", pageInput);
    }

不工作。但为什么?

接收到数据时actionResult为空!!但发送前数据是正确的。

4

3 回答 3

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]属性添加到控制器操作

于 2013-10-21T12:42:39.273 回答
0

我的猜测是你没有发布到你的url

$.ajax({
    url: '@Url.Action("GetPageNumbers", "MyClasses")',
    data: '@Model.PageInput',
    type: 'POST',
    success: function (data) {
        console.info(data);
    }
});

现在它将发布。

于 2013-10-21T12:39:10.970 回答
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 发布参数中使用类的名称。

于 2013-10-21T12:44:49.190 回答