【问题标题】:Passing Parameters from JQuery to Controller Action in ASP.NET MVC 3将参数从 JQuery 传递到 ASP.NET MVC 3 中的控制器操作
【发布时间】:2012-02-11 21:43:34
【问题描述】:

我有一个使用 JQuery 与后端通信的网页。我有一些 POST 操作。但是,我现在有一个 GET 操作,并且我注意到传递给它的参数值为 null。我的 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 操作的参数(如上面的参数)具有空值。我的问题是,我做错了什么,如果我需要传递多个参数怎么办?

非常感谢您的帮助!

【问题讨论】:

    标签: jquery asp.net-mvc-3


    【解决方案1】:

    允许您向 ASP.NET MVC 3 中的控制器操作发送 JSON 请求的 JsonValueProviderFactory 适用于 POST 请求。对于 GET 请求,您可以使用标准请求:

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

    或者,如果您想发送 JSON 请求,请在您的 AJAX 请求中修改 type: 'POST'。显然,在这种情况下,您必须从控制器操作中删除 HttpVerbs.Get 属性,该属性当前将其限制为仅 GET 请求。

    【讨论】:

      猜你喜欢
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多