为什么我的ActionResult不会读取这个jQuery AJAX帖子值?

时间:2014-03-06 14:52:25

标签: jquery ajax asp.net-mvc

我在简单的表格图形上使用基于JQuery的分页工具,需要将选定的页码发送到生成LINQ查询的ActionResult,以便正确分页结果。但是,当我尝试通过$ .ajax调用传递页码时,我用来获取数据,我的ActionResult没有得到发布的值。我做错了什么?

$ .ajax call:

(我已确认此功能正在继承页码。我还通过FireBug确认已发布“pagenum”参数):

function refreshBoard(inputValue, pageNumber) {
    var job;
    var myurl = '/Search/GetItems/' + inputValue
    var mydata = "pagenum = " + pageNumber;
    $.ajax({
        data: mydata,
        url: myurl,
        type: 'POST',
        dataType: 'json',
        success: function (data) {

的ActionResult:

    [HttpPost]
    public ActionResult GetItems(string id)
    {
        int x = Convert.ToInt32(Request["pagenum"]); //<-- Does not work. X is always 0
        //..... More code .....

2 个答案:

答案 0 :(得分:0)

将其添加为参数。参数模型绑定会将请求中的值设置为参数。您也可以使用默认值(1),这样如果调用者没有发送该值,它将被设置为1(我们给出的默认值)

[HttpPost]
public ActionResult GetItems(string id,int pagenum=1)
{
   //use the "pagenum" variable now
   //to do : return something
}

您可以在querystring中发送pagenum

var myurl = '/Search/GetItems/' + inputValue+"?pagenum="+pageNumber 

或者您可以像这样发送JSON结构

var mydata = { "pagenum" : pageNumber }

答案 1 :(得分:0)

它无法正常工作的主要问题可能是因为您没有将JSON作为数据发送。因此,我建议您按照以下方式更改代码。您还要发布到'/search/GetItems/' + pageNumber,此帖子应该改为'/search/GetItems/'

的Ajax:

$.ajax({
    data: {id: inputValue, pageNum:pageNumber},
    url: '/Search/GetItems',
    type: 'POST',
    dataType: 'json',
    success: function (data) {

    }

服务器:

[HttpPost]
public ActionResult GetItems(string id, int pageNum)
{
}

JSON数据必须与服务器端的参数匹配!