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

根据我对您需要实现的目标的假设,如果您已经将 JSON 反序列化为,List<Event>那么您所需要的只是一个使用的视图,IEnumerable<Event>并且您操作的最后一行GetEvent将类似于:

return View("MyEventListingView", events);

这应该呈现你的MyEventListingView

于 2012-06-14T19:43:11.667 回答
0

首先,您不需要完成所有反序列化工作,ASP.NET MVC 框架具有JsonValueProvider帮助您通过模型绑定将输入 JSON 自动序列化为对象或集合的功能。

例如。如果您有一个允许某人编辑员工详细信息并将信息作为 JSON 提交给操作的表单Edit,那么您所要做的就是

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

内置模型绑定功能JsonValueProvider会自动创建Employee并填充请求中可用的 json 数据的详细信息。因此,您无需JavaScriptSerailizer直接使用并完成所有这些工作。

其次,当您想从控制器操作传递一些数据以查看时,您可以通过不同的方式进行操作,但我建议使用强类型视图,以便您可以将其传递List<Event>给显示它们的视图,如下所示

return View(events);

您应该避免ViewData/ViewBag在这些情况下使用。

于 2012-06-18T12:03:35.613 回答