C# MVC 3 JsonResult不具有d属性

C# MVC 3 JsonResult不具有d属性,c#,.net,json,C#,.net,Json,我正在使用.NET3.5迁移旧代码,它有一些返回json数据的ASMXWebService。这些服务返回包装在“d”属性上的json,该属性是出于安全目的在.NET3.5上引入的 当将这些Web服务移动到mvc控制器操作时,没有与我有关的d属性,因为“d”属性是出于某种原因引入的安全修复程序 我应该自己将Json结果包装到d属性上,还是我做错了什么 public JsonResult GetJsonData() { return Json(2); } 这

我正在使用.NET3.5迁移旧代码,它有一些返回json数据的ASMXWebService。这些服务返回包装在“d”属性上的json,该属性是出于安全目的在.NET3.5上引入的

当将这些Web服务移动到mvc控制器操作时,没有与我有关的d属性,因为“d”属性是出于某种原因引入的安全修复程序

我应该自己将Json结果包装到d属性上,还是我做错了什么

    public JsonResult GetJsonData()
    {
        return Json(2);
    }
这将产生:

2
而不是:

{ "d": "2" }

你每件事都做对了

我不是MVC开发人员团队的成员,但我认为决定不引入
d-wrapper
,以支持与其他世界的兼容性

然而,他们朝着保护json响应迈出了一步。默认情况下,您无法返回Json来响应GET请求,因此您必须在代码中添加额外的条件:

public JsonResult GetJsonData()
{
    return Json(2, JsonRequestBehavior.AllowGet);
}
如果您想为Json数组提供敏感数据以获取请求,那么是的,您必须手动包装数组

试试这个

public JsonResult GetJsonData()
{
    return Json(new {d = 2}, JsonRequestBehavior.AllowGet);
}

@例如,在这个站点上有很多I4V,可以在这里阅读关于d属性的内容:您可以通过
returnjson(new{d=2})实现这一点看看这个答案:我知道如何“绕过它”,我的问题更多的是,如果d作为一个重要的安全补丁被引入.NET3.5,并且似乎已经被删除或者我做得不好,为什么它不在那里。我可以创建一个helper方法,将d放在所有json结果中,但我希望在将对json()的所有调用更改为该helper方法之前了解发生了什么。解释在您的第二个链接中,不是吗?这也告诉你如何缓解它
对于ASP.NET MVC(和其他类似的框架),相当多的开发人员没有使用客户端生成的代理(我们没有),而是使用jQuery和其他类似的库来调用这些方法,这使得“d”修复有点尴尬。
。这大概就是为什么它不这么做。