0

私のビューウィンドウには、getイベントメソッドを呼び出すフォームがあります

  <form action="GetEvent" method="post">

    <input type="submit" value="Click Me" />
    </form>

これは、Homecontroller で GetEvent を呼び出し、そのように処理します

   public ActionResult GetEvent()
    {
        try
        {

            string at = "aa";
            string et = "KI";
            string t = "20";
            string _checkingUrl = String.Format("http://172.22.22.10/SampleAPI/Event/GetEvents?at={0}&et={1}&t={2}&responseFormat=json", at, et, t);
            System.Net.HttpWebRequest request=System.Net.WebRequest.Create(_checkingUrl) as System.Net.HttpWebRequest;
            System.Net.HttpWebResponse response=request.GetResponse() as System.Net.HttpWebResponse;
            System.IO.StreamReader _readResponse=new System.IO.StreamReader(response.GetResponseStream());
            //The encrypted dynamics response in either xml or json


            string _responseAsString=_readResponse.ReadToEnd();
            JavaScriptSerializer parseResponse = new JavaScriptSerializer();
            List<Event> events = parseResponse.Deserialize<List<Event>>
           (_responseAsString);

私のイベント モデル ビューでクラスを作成しました。このメソッドの下

            //return Content(_responseAsString);


            _readResponse.Close();
        }
        catch (Exception e)
        {
            //log error
        }
        return View();
    }


}

     public class Event
{
     // side note this variables are the name of the Json Data that i retrieved
    public string event_key { get; set; }
    public string user_token { get; set; }
    public string event_set_key { get; set; }
    public string event_type { get; set; }
    public string event_date { get; set; }
    public string event_amount { get; set; }
    public string event_location_key { get; set; }
    public string event_location_name { get; set; }
    public string event_location_city { get; set; }
    public string event_location_state { get; set; }
    public string event_location_country { get; set; }
    public string event_acknowledged { get; set; }
}

今問題です。Json 応答を解析し、それをオブジェクト リストに入れました。表に表示するにはどうすればよいですか。「クリックしてください」ボタンをクリックすると、メソッドが実行され、テーブルに偶数オブジェクトを含むページが表示されますか? 私はそれを理解しました。私はviewbag.eventss = event;のイベントになる可能性があると思います。そして、それをhtmlでforeachループとして使用します

4

2 に答える 2

0

まず、すべての逆シリアル化作業を行う必要はありません。ASP.NETMVCフレームワークには、JsonValueProviderモデルバインディングを介して入力JSONをオブジェクトまたはコレクションに自動的にシリアル化するのに役立つがあります。

例:誰かが従業員の詳細を編集し、その情報をJSONとしてアクションに送信できるフォームがある場合、あなたがしなければならEditないのは

[HttpPost]
public ActionResult Edit(Employee employee)
{
  .. save to db
}

組み込みのモデルバインディング機能は、リクエストで利用可能なjsonデータから詳細をJsonValueProvider自動的に作成して入力します。Employeeしたがって、JavaScriptSerailizer直接使用してすべての作業を行う必要はありません。

次に、コントローラーアクションからビューにデータを渡す場合は、さまざまな方法で行うことができますがList<Event>、以下のように表示されるビューに渡すことができるように、強く型付けされたビューを使用することをお勧めします

return View(events);

このような場合は使用を避けてくださいViewData/ViewBag

于 2012-06-18T12:03:35.613 に答える
0

達成する必要があるという私の仮定に基づいて、JSON を既に逆シリアル化している場合、List<Event>必要なのは View を使用することだけでありIEnumerable<Event>、アクションの最後の行は次のGetEventようになります。

return View("MyEventListingView", events);

これはあなたをレンダリングするはずですMyEventListingView

于 2012-06-14T19:43:11.667 に答える