14

ViewData を使用して Json をビューに渡そうとしています

コントローラ

ViewData("JsonRegionList") = Json(RegionService.GetActiveRegions())

見る

        $("input#UserRegion").autocomplete({
                source:"<%: ViewData("JsonRegionList").ToString %>",
                minLength: 3,

しかし、私が直面している問題は、出力ソースが次のように見えることです

        $("input#UserRegion").autocomplete({
                source:"System.Web.Mvc.JsonResult",
                minLength: 3,

これは明らかに正しくありません。基本的なものが欠けていますか?

4

1 に答える 1

19

Json() コントローラー メソッドは JsonResult を返しますが、これは JSON 文字列とは異なります。JsonResult はデータを保持しますが、View Engine が JsonResult.ExecuteResult() を呼び出すと、データは実際には応答に直接書き込まれます。これはおそらく必要以上の情報です。要点は、コントローラーで Json() を呼び出しても、JSON の文字列が得られないということです。

データを JSON 文字列に変換するだけの場合は、Json() メソッドが内部で使用する JavaScriptSerializer を使用できます。

JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewData["JsonRegionList"] = serializer.Serialize(jsonRegionList); 
于 2010-07-26T04:57:58.723 に答える