JSON MVC更改了内容类型

时间:2012-10-09 19:54:42

标签: asp.net asp.net-mvc razor

我有我的基本控制器,并希望将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,并将通过使用它来更改内容类型

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

尝试使用contentype overload http://msdn.microsoft.com/en-us/library/dd492713(v=vs.98).aspx告诉它你想要text / plain。

答案 2 :(得分:0)

请试试这个:

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

您的javascript代码将是这样的:

var myJson = Test