将TempData返回到我的视图

本文关键字:我的 视图 返回 TempData | 更新日期: 2023-09-27 18:21:44

我正在用MVC 4编写一个简单的预订系统。当使用表格提交预订时,我想重定向到下一页,但我想传递我的模型数据。

 [HttpPost]
        public ActionResult Index(CustomerBookingModel CustomerBooking)
        {
            if (ModelState.IsValid)
            {
                switch (CustomerBooking.Cancellation)
                {
                    case true:
                        //TODO: Data layer method for cancellation
                        CustomerBooking.ActionStatus = StatusCode.Cancelled.ToString();
                        break;
                    case false:
                        //TODO: Data layer method for making a booking in DB
                        CustomerBooking.ActionStatus = StatusCode.Booked.ToString();
                        break;
                }
                TempData["Model"] = CustomerBooking;
                return RedirectToAction("About");                
            }
            else
            {
                return View();
            }
        }

如果我的模型有效,我会根据预订状态进行一些逻辑运算。然后我填充TempData,我想在ActionMethod中访问它。

public ActionResult About()
        {
            if (TempData["Model"] != null)
            {
                var model = TempData["Model"];
                return View(model);
            }
            return View();
        }

在视图中显示这些数据的好方法是什么?

@ViewData["Model"]
@{
    ViewBag.Title = "About";
}

我的视图为空,因为我使用的是视图数据,而不是模型。

将TempData返回到我的视图

由于TempData将返回一个object,您应该尝试将其强制转换回。

控制器

public ActionResult About()
{
    var model = (TempData["Model"] as CustomerBookingModel)
                ?? new CustomerBookingModel();
    return View(model);
}

关于cshtml

@model CustomerBookingModel
@Html.DisplayForModel();

显示模板/CustomerBookingModel.chtml

@model CustomerBookingModel
<div>
    @Html.LabelFor(m => m.SomeProperty)
    <p>@Model.SomeProperty</p>
</div>