加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET MVC 3中将参数从JQuery传递到Controller Action

发布时间:2020-12-16 03:48:35 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用 JQuery与后端通信的网页.我有一些POST动作.但是,我现在有一个GET操作,我注意到传递给它的参数值为null.我的POST动作工作正常.我无法弄清楚为什么. 从我的.html文件中,我有以下JQuery查询: var vm = { emailAddress:"someone@somewhere.com" };
我有一个使用 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操作的参数(如上面的参数)具有空值.我的问题是,我做错了什么,如果我需要传递多个参数怎么办?

非常感谢你的帮助!

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读