1

我有我的基本控制器并希望将 JSON 数据作为字符串返回。它不会在 AJAX 中使用。

在我看来,我有这个:

<script>
    var myJson = @Html.Action("JsonMethod","Controller")
    // Some JS that need JSON data...
</script>

我的控制器看起来像这样

public ActionResult JsonMethod() {
    return Content(Json("Test").ToString());
}

似乎我只需要触摸 Json 对象,它就会转到HttpContext.Current.Response并更改内容类型,这样application/json会使视图无法使用。我对 Json 对象需要一个 HttpContext 是否正确,并将通过使用它来更改内容类型

4

3 回答 3

2
Json("Test")

上面实际上是控制器上的一个方法,当调用它时,它不仅仅是将对象转换为 JSON,就像改变你找到的内容类型一样。

您可能想直接使用 JavaScriptSerializer 并将序列化的字符串放在 ViewBag 或模型中。

您也可以直接在视图中创建一个扩展方法来完成此操作。

public static class Helpers
{
    public static MvcHtmlString GetJson(this HtmlHelper helper, object obj)
    {
        return new MvcHtmlString(new JavaScriptSerializer().Serialize(obj));
    }
}

然后在视图中。

<script type="text/javascript">
    var myJson = @Html.GetJson(new {test="Test Value"});

</script>
于 2012-10-09T20:58:33.560 回答
0

看起来是控制器上的 Content 方法根据 json 字符串解释内容类型。

尝试使用内容类型重载http://msdn.microsoft.com/en-us/library/dd492713(v=vs.98).aspx告诉它您想要文本/纯文本。

于 2012-10-09T20:08:25.027 回答
0

请试试这个:

return Content(Json("Test").Data.ToString());

您的 javascript 代码将是这样的:

var myJson = Test
于 2012-10-09T21:19:41.443 回答