Asp.net mvc 3 can';t通过“t”正确传递参数;应用程序/json“;
我整个上午都试图找到解决办法(浏览了SO中的所有相关帖子,自己做了几次实验),但都失败了 以下是服务器代码: 控制器:Asp.net mvc 3 can';t通过“t”正确传递参数;应用程序/json“;,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,我整个上午都试图找到解决办法(浏览了SO中的所有相关帖子,自己做了几次实验),但都失败了 以下是服务器代码: 控制器: [HttpGet] public JsonResult Test(Entity e) { return Json(new { success = true }, JsonRequestBehavior.AllowGet); } 实体: public class Entity { public string A { set; ge
[HttpGet]
public JsonResult Test(Entity e)
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
实体:
public class Entity
{
public string A { set; get; }
public string B { set; get; }
}
使用客户端代码:
var e = {
A: "1",
B: "2"
};
$.ajax({
url: "/Home/Test",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(e)
// data: e
});
我得到:
使用客户端代码:
var e = {
A: "1",
B: "2"
};
$.ajax({
url: "/Home/Test",
//contentType: "application/json; charset=utf-8",
dataType: "json",
//data: JSON.stringify(e)
data: e
});
我得到:
希望能找到答案,因为z application/json更有用
编辑
当我将协议更改为POST时,可以正确传递参数。
这里有一个新问题:为什么不获得??因为转换后的请求查询字符串不满足mvc3的需要
EDIT2
似乎所有问题都在GET方法上GET不应传递复杂参数??如果你是restFUL的粉丝,那就很奇怪了。试着指定请求类型(尽管它默认为GET): 或者,尝试使用
POST
请求并使用[HttpPost]
属性修饰JsonResult
操作方法:
[HttpPost]
public JsonResult Test(Entity e)
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
然后
尝试指定请求类型(尽管它默认为无论如何获取): 或者,尝试使用
POST
请求并使用[HttpPost]
属性修饰JsonResult
操作方法:
[HttpPost]
public JsonResult Test(Entity e)
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
然后
好的,它可以和“POST”一起使用,但仍然不能和“GET”一起使用。。。为什么?好吧,它可以和“POST”一起使用,但仍然不能和“GET”一起使用。。。为什么?很好您发现了一个关于
Get
和Post
请求类型之间差异的有用讨论:很高兴您发现了一个关于Get
和Post
请求类型之间差异的有用讨论:
$.ajax({
type: "POST",
url: "/Home/Test",
contentType: "application/json;charset=utf-8",
dataType: "json",
data: JSON.stringify(e)
});