Pergunta

Estou usando o método Getjson da JQuery para recuperar alguns dados de um controlador MVC.

    [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);
    }

A idéia é que eu possa usar esse método do controlador para fornecer todos os contatos ou um determinado número de contatos se "número do" for fornecido.

O problema é que "número de" no meu controlador é sempre nulo quando envio a solicitação GET para "contatos/getContacts/5". No entanto, se eu enviar a solicitação GET para "Contatos/getContacts/? NumberOf = 5", ele funciona como esperado.

Se ajudar, aqui está o método JavaScript:

  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>"
         );
       });
    });
  },
Foi útil?

Solução

Você provavelmente tem um problema de roteamento - tente aplicar uma dessas duas correções:

  1. (Fácil, mas talvez um pouco feio)
    Renomear o numberOf parâmetro para id, para permitir que ele seja apanhado pela rota padrão.

  2. (Um pouco mais de trabalho, mas seu código ficará melhor - pelo menos neste método)
    Adicione a rota a seguir à sua rota Colleciton em global.asax.cs:

    routes.MapRoute(
        "ContactsRoute",
        "Contacts/GetContacts/{numberOf}",
        new { controller = "Contacts", action = "GetContacts", numberOf = null }
    );
    
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top