Json 不同内容类型的ASP.NET MVC@Html.RenderAction

Json 不同内容类型的ASP.NET MVC@Html.RenderAction,json,asp.net-mvc-4,Json,Asp.net Mvc 4,就在我的结束之前,我正在尝试 <script type="text/javascript"> @{ Html.RenderAction("RenderData4JS", "Helper"); } </script> @{Html.RenderAction(“RenderData4JS”,“Helper”);} 返回Json(Data4JS)。基本上,它只输出Json,所以我可以使用jQuery访问它 当我这样做时,整个网页,然后显示HTML源代码(必须改变整

就在我的
结束之前,我正在尝试

<script type="text/javascript">
    @{ Html.RenderAction("RenderData4JS", "Helper"); }
</script>

@{Html.RenderAction(“RenderData4JS”,“Helper”);}
返回Json(Data4JS)。基本上,它只输出Json,所以我可以使用jQuery访问它

当我这样做时,整个网页,然后显示HTML源代码(必须改变整个网站的内容类型)


我怎样才能避开这个问题,还是有别的办法?(我不想使用AJAX)

好的,我知道怎么做了(足够优雅)

//在您的ActionResult操作中

return Content(GlobalHelper.ObjectToJson("GeneralData", Data4JS.Get()));
//在某些实用程序类中:

public static string ObjectToJson(string objectName, object o)
        {
            System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            return "{\"Data4JS\":" + jsonSerializer.Serialize(o) + "}";
        }

您可以将该操作的结果放入某个对象(“可能是字符串”)中,并将其与用作该视图模型的对象一起返回。在脚本部分,可以传入该变量

<script type="text/javascript">
var x =  @Model.test
...Do whatever you need with the test string
</script>

var x=@Model.test
…对测试字符串执行任何需要的操作

但是我不建议这样做,我认为最好使用JQuery调用ajax,我喜欢这个选项,因为您可以在请求生命周期的任何时候(通过在会话中存储)将动态属性附加到对象,然后在身体关闭Json之前,让JS获得一个漂亮的小对象来处理,而不必在一个肮脏的ajax调用中乱来