将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
将返回一个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>