/ / Преминаване на параметри от JQuery към действие на контролера в ASP.NET MVC 3 - jquery, asp.net-mvc-3

Предаване на параметри от JQuery към действие на контролера в ASP.NET MVC 3 - jquery, asp.net-mvc-3

Имам уеб страница, която използва JQuery заобщуват с бекенда. Имам някои POST действия. Въпреки това, сега имам GET действие и забелязах, че стойностите на параметрите, предадени на него, са нулеви. Моите POST действия работят просто добре. Не мога да разбера защо.

От моя .html файл имам следните заявки за 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
});

В контролера си имам:

public class MyServiceController : Controller
{
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult MyAction(string emailAddress)
{
return Json(new { address:emailAddress });
}
}

Моят маршрут е настройка, както следва:

context.MapRoute(
"MyAction",
"myService/{controller}/MyAction",
new { controller = "MyService", action = "MyAction" }
);

Имам представа, че пропускам нещо в моятамаршрут. Но не съм сигурен какво е. Следвах същия синтаксис, който използвах с POST действията си. Параметрите с тези действия работят просто добре. Но параметрите с моите GET действия, като това по-горе, имат нулеви стойности. Въпросът ми е , какво правя грешно и какво, ако трябва да предам няколко параметъра?

Благодаря ви много за вашата помощ!

Отговори:

4 за отговор № 1

JsonValueProviderFactory, който ви позволява да изпращате заявки JSON към действия на контролера в ASP.NET MVC 3 работи с POST заявки. За GET заявки можете да използвате стандартна заявка:

var vm = { emailAddress:"someone@somewhere.com" };
$.ajax({
url: "/myService/myAction",
type: "GET",
data: vm,
success: myAction_Succeeded,
error: myAction_Failed
});

Или ако искате да изпратите JSON заявки за промяна type: "POST" във вашата заявка AJAX Очевидно в този случай ще трябва да премахнете HttpVerbs.Get атрибут от вашето действие на контролера, който в момента го ограничава само до GET заявки.