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

json文字列に基づいてコンテンツタイプを解釈しているのは、コントローラーのContentメソッドのようです。

contentypeオーバーロードhttp://msdn.microsoft.com/en-us/library/dd492713(v=vs.98).aspxを使用して、 text/plainが必要であることを伝えてください。

于 2012-10-09T20:08:25.027 に答える
0

これを試してください:

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

あなたのJavaScriptコードは次のようになります:

var myJson = Test
于 2012-10-09T21:19:41.443 に答える