Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 can';t通过“t”正确传递参数;应用程序/json“;_Asp.net Mvc 3_Jquery - Fatal编程技术网

Asp.net mvc 3 can';t通过“t”正确传递参数;应用程序/json“;

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

我整个上午都试图找到解决办法(浏览了SO中的所有相关帖子,自己做了几次实验),但都失败了

以下是服务器代码:

控制器:

[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)
      });