我在用
TempData["hdn"] = "1";
在控制器中
如果我用这个
@{
var hdn = (string)TempData["hdn"];
}
在视图中,TempData["hdn"]
在 POST 中获取 null 的值。如果我在视图中跳过此代码,它会在 POST 中持续存在。为什么会这样?
我在用
TempData["hdn"] = "1";
在控制器中
如果我用这个
@{
var hdn = (string)TempData["hdn"];
}
在视图中,TempData["hdn"]
在 POST 中获取 null 的值。如果我在视图中跳过此代码,它会在 POST 中持续存在。为什么会这样?
TempData 值在读取后被清除。
如果您希望在视图中读取该值后将其返回到控制器中,那么您需要将其包含在隐藏字段中,然后从表单值中读取它。
就像是:
<input type="hidden" name="hdn" value="@hdn" />
然后在您的控制器中,您可以执行以下操作:
var hdn = Request.Form["hdn"]
高温高压
TempData
类似于 ViewData 但有区别。它可以包含两个连续请求之间的数据,之后它们被销毁。
如果你想保持TempData
使用价值
TempData.Keep()
例子:
var hdn= TempData["hdn"]; //it is marked for deletion
TempData.Keep("hdn"); //unmarked it
TempData
调用后将删除键值集。Satpal 谈到了 Keep,但如果您想明确每次想要检索它而不删除它,您也可以使用 Peek。
TempData.Peek(String)
例子:
var hdnNotDeleted = TempData.Peek["hdn"];
如果您的控制器操作返回 a ViewResult
,并且您很想将数据放入,那么在这种情况下,
TempData
请不要这样做。使用 。意味着是一个非常短暂的实例,您应该只在当前和后续请求期间使用它。由于以这种方式工作,您需要确定下一个请求将是什么,并且对于另一个请求是您唯一可以保证这一点的时间。因此,使用Reliably 工作的唯一场景是在重定向时。所以请记住。ViewData/ViewBag
TempData
TempData
Redirecting
View
TempData
有史以来最好的解释:http ://sampathloku.blogspot.com/2012/09/how-to-use-aspnet-mvc-tempdata-properly.html