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