C# MVC 3 JsonResult不具有d属性
我正在使用.NET3.5迁移旧代码,它有一些返回json数据的ASMXWebService。这些服务返回包装在“d”属性上的json,该属性是出于安全目的在.NET3.5上引入的 当将这些Web服务移动到mvc控制器操作时,没有与我有关的d属性,因为“d”属性是出于某种原因引入的安全修复程序 我应该自己将Json结果包装到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); } 这
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”修复有点尴尬。
。这大概就是为什么它不这么做。