4

私はMVC4かみそりプロジェクトに取り組んでいます。クライアント側のJavaScriptで使用することを目的としたjsonResultとしてモデルに保存するロールオブジェクトのリストがあります。

//Model
public JsonResult JsonRoles { get; set; }

//Controller
var myroles = from r in myroles select new { r.Id, r.Description };
var myModel.JsonRoles = Json(myroles);


//Client side javascript
var data = '@(Model.JsonRoles)';
alert(data);

私は以下のようにjavascriptでこれにアクセスしようとしました。警告すると、常に「System.Web.Mvc.JsonResult」という文字列が表示されますが、必要なのはjsonデータです。私は何が間違っているのですか?誰かが私を正しい方向に向けてくれませんか

4

3 に答える 3

6

私はViewDataを使用して問題を解決しましたが、モデルのプロパティも解決できる同様の行で結果を取得できませんでした

//Contoller Class 
 public ActionResult CreateRequest()
        {

            var data = new { Id = "one", Make = "Two" };


            ViewData["Data"] = Json(data);

            return View();

        }

//And client side is 

  <script type="text/javascript">
        var data = @Html.Raw(Json.Encode(ViewData["Data"]));
        alert(JSON.stringify(data.Data));
    </script>
于 2012-07-11T13:50:12.683 に答える
0

linqpadでは、次の方法でデータを取得できました。

var x= new System.Web.Mvc.JsonResult();
x.Data=new System.Web.Script.Serialization.JavaScriptSerializer().Serialize("testing, testing");
x.Data.Dump();

また、

var x= new System.Web.Mvc.JsonResult();
x.Data=new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(new{test="testing"});
x.Data.Dump();

これは、かみそりのページでは正しい解決策ではない可能性があります。私が期待する

var data = "@{Model.JsonRoles.ExecuteResult(this.ControllerContext);}";

適切なMVCアプリで正しくなるようにします。

于 2012-07-11T13:52:21.977 に答える
0

JsonResultAjaxから呼び出す予定のアクションメソッドの戻り型として使用される傾向があります。

JavaScriptSerializer「myroles」オブジェクトをシリアル化するには、を使用する必要があります。例えば

JavaScriptSerializer serializer = new JavaScriptSerializer();
myModel.JsonRoles = serializer.Serialize(myroles);

モデルのJsonRolesのタイプを文字列に変更します。

public string JsonRoles { get; set; }

最後に、ビューに次のように出力します。

var data = @Html.Raw(Model.JsonRoles);
alert(data.id);
于 2012-07-11T14:01:16.463 に答える