7

C#コードが背後にあるMVCWebサイトがあります。Jsonを返すActionResultを使用しています。

ViewBagに何かを入れようとしていますが、機能していないようです。

コードは次のようになります-

    public ActionResult GetStuff(string id)
    {
        ViewBag.Id = id;

        stuff = new StuffFromDatabase(id);

        return this.Json(stuff , JsonRequestBehavior.AllowGet);
    }

「id」はViewBag.Idに表示されません。

この方法でIDをViewBagに入れることはできますか?私がそれをどのようにすべきかについての提案がない場合は?ありがとう!

4

3 に答える 3

4

別の解決策は次のとおりです。jsonの結果を返すpostアクションの後にアクセス"id"プロパティが必要な場合は、必要なすべてのデータを含む複雑なオブジェクトを返すことができます。

public ActionResult GetStuff(string id)  
{  
    ViewBag.Id = id;  

    stuff = new StuffFromDatabase(id);  

    return this.Json(new { stuff = stuff, id = id } , JsonRequestBehavior.AllowGet);  
} 

その後、jsonの戻り値で、次の例のようにすべてのプロパティにアクセスできます。

$.post(action, function(returnedJson) {
   var id = returnedJson.id;
   var stuff = returnedJson.stuff;
});
于 2012-09-28T14:53:38.770 に答える
3

ViewBagはサーバー側でのみ使用できます。あなたはjson文字列をブラウザに送り返しています。おそらくブラウザはそれを使って何かをします。次のように、json応答でIDを送信する必要があります。

return this.Json(new { Id = id, Data = stuff }, JsonRequestBehaviour.AllowGet);
于 2012-09-28T14:52:28.947 に答える
1

ViewBag.IdJsonの結果を設定しようとしていますか?ViewBagではなく、ビューで使用されますJson

追加した

コメントからわかるように、JavaScriptで使用しようとすると、そのようなことができます。これを試して:

return this.Json(new {stuff, id} , JsonRequestBehavior.AllowGet);

次に、javascriptでこのデータにアクセスできます。

于 2012-09-28T14:51:17.447 に答える