2012-10-09 69 views
1

我有我的基本控制器,並希望將JSON數據作爲字符串返回。它不會在AJAX中使用。JSON MVC更改內容類型

在我看來,我有這樣的:

<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和更改內容類型,以便使視圖不可用。我說得對,Json對象需要一個HttpContext,並且通過使用它來更改內容類型

+0

你不想JSON格式的迴應? – Shyju

+0

有沒有理由不能使用此模型?你提到這不是ajax,所以你必須在視圖中做這個服務器端。 – Maess

+0

您可以使用javascriptserializer獲取json作爲字符串並將其粘貼在viewbag/viewdata或模型中 –

回答

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> 
0

試試這個請:

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

你的JavaScript代碼將是這樣的:

var myJson = Test 
相關問題