【问题标题】:uable to assign TempData value to a variable in a View in mvc 4无法将 TempData 值分配给 mvc 4 中视图中的变量
【发布时间】:2017-02-19 05:30:08
【问题描述】:

基本上我正在了解 ViewBag、ViewData、TempData 在实践中的区别。我对这些概念的理论感到困惑,所以我想看看实际情况如何。

我了解到 TempData 用于将数据从控制器发送到控制器,即从一个操作方法到另一个操作方法,并且它是短暂的。即使这样我也可以将 TempData 值传递给视图。当我读到它的值在后续请求后变为空时。但是在我的示例代码 sn-p 中,虽然重定向后 TempData 中存在一个值,但我无法将其分配给变量。

public ActionResult Index()
{
var featuredProduct = new Product
   {
    Name = "Special cupcakes",
    Des = "Delectable vanilla and chocolate cupcakes",
    Creationdate= DateTime.Now,
    Expirydate= DateTime.Today.AddDays(7)
    };
ViewData["FeaturedProduct"] = featuredProduct;
ViewBag.product = featuredProduct;
TempData["FeaturedProduct"] = featuredProduct;
return Redirect("~/Home/Show");
}

由于这是第一次重定向,即设置 TempData 后的下一个后续请求,因此该值应保留在 Show Action 方法的 TempData 中。

public ActionResult Show()
{
var testdata= ViewData["FeaturedProduct"];
var testbag = ViewBag.product;
var tempdata = TempData["FeaturedProduct"];
return View();
}

现在我的困惑就在这里。如果我想在 Show View 中访问 TempData,我希望它应该为 null。当我在 Quick Watch 中看到时,它的值保持不变并且它的值没有分配给变量。那么 TempData 到底发生了什么。

@{
var tevar = TempData["Featured Product"] as Product;
}
@{
if (TempData["Featured Product"]!=null)
{
  <b><u>
   @tevar.Name
   </u></b> 
 }
 else{
 <b> Sorry tempdata values perished</b>
 }
}

虽然这看起来很基本,但请耐心等待并解释我的代码中 TempData 发生了什么。 谢谢。

【问题讨论】:

  • 为什么您认为 TempData 在 Show 视图中将为空?如果您重新加载 Show 操作或重定向离开它,它将为 null。
  • @DarinDimitrov 所以如果它不为 null 那么为什么 TempData 值没有被分配给 View 中的 tevar 变量?

标签: asp.net-mvc redirect tempdata


【解决方案1】:

您的Show 视图中有错字:

@{
var tevar = TempData["Featured Product"] as Product;
}

当然应该是:

@{
var tevar = TempData["FeaturedProduct"] as Product;
}

确保您使用与存储该值相同的密钥访问该值。

【讨论】:

    【解决方案2】:

    我现在可以清楚地理解 ViewBag、ViewData、TempData 之间的区别了。 重定向后 ViewBag 和 ViewData 值将丢失,但 TempData 值将在重定向之间保留,直到发生当前操作方法的刷新或我们导航到其他操作方法。

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 2015-06-19
      • 2023-03-24
      • 2018-03-14
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多