Eu tenho uma página da web que está usando o JQuery paracomunicar com o backend. Eu tenho algumas ações do POST. No entanto, agora eu tenho uma ação GET e notei que os valores de parâmetro passados para ele são nulos. Minhas ações de POST funcionam muito bem. Eu não consigo descobrir o porquê.
Do meu arquivo .html, tenho a seguinte consulta do JQuery:
var vm = { emailAddress:"someone@somewhere.com" };
$.ajax({
url: "/myService/myAction",
type: "GET",
data: JSON.stringify(vm),
contentType: "application/json",
success: myAction_Succeeded,
error: myAction_Failed
});
No meu controlador, tenho:
public class MyServiceController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult MyAction(string emailAddress)
{
return Json(new { address:emailAddress });
}
}
Minha rota é configurada da seguinte maneira:
context.MapRoute(
"MyAction",
"myService/{controller}/MyAction",
new { controller = "MyService", action = "MyAction" }
);
Eu tenho um palpite de que estou perdendo alguma coisa na minharota. Mas eu não tenho certeza do que é. Eu segui a mesma sintaxe que usei com minhas ações de POST. Parâmetros com essas ações funcionam muito bem. Mas os parâmetros com minhas ações GET, como a acima, têm valores nulos. , o que estou fazendo errado e se eu precisar passar vários parâmetros?
Muito obrigado pela sua ajuda!
Respostas:
4 para resposta № 1O JsonValueProviderFactory que permite enviar solicitações JSON para ações do controlador no ASP.NET MVC 3 funciona com solicitações POST. Para solicitações GET, você pode usar uma solicitação padrão:
var vm = { emailAddress:"someone@somewhere.com" };
$.ajax({
url: "/myService/myAction",
type: "GET",
data: vm,
success: myAction_Succeeded,
error: myAction_Failed
});
Ou se você quiser enviar solicitações JSON, modifique type: "POST"
no seu pedido AJAX. Obviamente, neste caso, você terá que remover o HttpVerbs.Get
atributo de sua ação do controlador que atualmente o restringe a somente solicitações GET.