$.getJSON Sends Null Parameters to MVC Controller

两盒软妹~` 提交于 2020-01-15 10:45:29

问题


I'm using JQuery's getJSON method to retrieve some data from an MVC controller.

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult GetContacts(int? numberOf)
    {
        List<Contact> contacts =
            (numberOf != null && numberOf > 0) ?
                _provider.GetContacts(Convert.ToInt32(numberOf)):
                _provider.GetContacts();

        return Json(contacts);
    }

The idea, is that I can use this controller method to supply both all contacts, or a given number of contacts if "numberOf" is supplied.

The problem is that "numberOf" in my controller is always null when I send the GET request to "Contacts/GetContacts/5". However, if I send the GET request to "Contacts/GetContacts/?numberOf=5" it works as expected.

If it helps, here's the javascript method:

  getContacts: function(numberOf){
    var path = "/Contact/GetContacts/";
        path = (numberOf<=0) ? path : "/Contact/GetContacts/" + numberOf; 

    $.getJSON(path, null,
      function(json){
       $.each(json, function(){       
         $('tbody','#contacts').append(
             "<tr id=\"contact-"+ this.Id +"\">"
            +  "<td>"+ this.Id +"</td>"
            +  "<td>"+ this.FirstName +"</td>"
            +  "<td>"+ this.LastName +"</td>"
            + "</tr>"
         );
       });
    });
  },

回答1:


You probably have a routing issue - try applying either of these two fixes:

  1. (Easy but maybe a little ugly)
    Rename the numberOf parameter to id, to enable it to be picked up by the default route.

  2. (A little more work, but your code will look better - at least in this method)
    Add the following route to your route colleciton in global.asax.cs:

    routes.MapRoute(
        "ContactsRoute",
        "Contacts/GetContacts/{numberOf}",
        new { controller = "Contacts", action = "GetContacts", numberOf = null }
    );
    


来源:https://stackoverflow.com/questions/1551263/getjson-sends-null-parameters-to-mvc-controller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!