Имам уеб страница, която използва 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 за отговор № 1JsonValueProviderFactory, който ви позволява да изпращате заявки 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 заявки.