将对象传递给另一个方法,然后传递给视图

时间:2016-12-08 19:59:02

标签: c# asp.net-mvc parameter-passing

所以我有这个索引方法:

 public List<ParkingLot> parkingLot;
 public async Task<ActionResult> Index(Position postData)
        {
            string json = new WebClient() { Encoding = Encoding.UTF8 }.DownloadString("json_url_removed_for_post");
            parkingLot = JsonConvert.DeserializeObject<List<ParkingLot>>(json);

            return View(parkingLot);
         }

我想将ParkingLot对象列表和收到的postData发送到About方法。

public ActionResult About()
        {
            ViewBag.Message = "hello about";

            return View();
        }

我该怎么做呢?然后我想在about索引中能够显示一些数据。如何从控制器传递它?

1 个答案:

答案 0 :(得分:1)

您应该使用TempData

public List<ParkingLot> parkingLot;
public async Task<ActionResult> Index(Position postData)
    {
        string json = new WebClient() { Encoding = Encoding.UTF8 }.DownloadString("json_url_removed_for_post");
        parkingLot = JsonConvert.DeserializeObject<List<ParkingLot>>(json);
        TempData["postData"] = postData;
        TempData["parkingLot"] = parkingLot;
        return View(parkingLot);
     }

然后,您可以同时使用它们:

public ActionResult About()
    {
        ViewBag.Message = "hello about";
        var postData = (Position)TempData["postData"];
        var parkingLot = (List<ParkingLot>)TempData["parkingLot"];
        return View();
    }

请注意,TempData需要进行类型转换,因为将数据存储为object,并null进行检查。

您可以将postData返回About页面,如下所示:

return View(postData);

然后,在About页面的顶部,您必须写@model Position,然后您可以在Model课程的帮助下使用它。