4

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

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

我应该自己将 Json 结果包装在广告属性上还是我做错了什么?

    public JsonResult GetJsonData()
    {
        return Json(2);
    }

这输出:

2

代替:

{ "d": "2" }
4

2 回答 2

3

尝试这个

public JsonResult GetJsonData()
{
    return Json(new {d = 2}, JsonRequestBehavior.AllowGet);
}
于 2013-05-06T06:32:43.763 回答
2

你做的一切都是正确的。

我不是 MVC 开发人员团队中的一员,但我认为为了d-wrapper与其他世界兼容而决定不引入。

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

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

如果您想将带有敏感数据的 Json 数组返回给 GET 请求,那么是的,您必须手动包装您的数组。

于 2013-05-06T06:16:35.580 回答