C# ASP.NET MVC:重新分配TempData
在控制器操作中,我从TempData变量中的重定向接收变量C# ASP.NET MVC:重新分配TempData,c#,asp.net-mvc,tempdata,C#,Asp.net Mvc,Tempdata,在控制器操作中,我从TempData变量中的重定向接收变量 public ActionResult ChangePassword() { string t = (string)TempData["myVariable"]; // works ok when coming from the redirect [..] } 因为我需要为另一个调用保留该数据,所以我尝试在返回视图之前重新分配它 public ActionResult ChangePassword() { st
public ActionResult ChangePassword()
{
string t = (string)TempData["myVariable"]; // works ok when coming from the redirect
[..]
}
因为我需要为另一个调用保留该数据,所以我尝试在返回视图之前重新分配它
public ActionResult ChangePassword()
{
string t = (string)TempData["myVariable"];
[..]
TempData["myVariable"] = TempData["myVariable"];
return View();
}
我立即从呈现的页面向ChangePassword提交POST请求,但这次TempData[“myVariable”]为空。也许我在做一些愚蠢的事情,但是如何得到想要的结果呢?我不想使用会话变量(它将持续更长的时间,我将努力确保手动清除该变量以防止会话变量受到污染)。我可以通过表单(一个隐藏变量)重新发布它,但我更愿意只在服务器端保留该变量。TempData只在当前请求的上下文中持久存在。如果您将内容返回给客户机,然后客户机将发回,则您不能使用该内容。您的选项非常标准,基本上仅如您所述:
- 使用一个表单变量(如您所述-我猜如果它是一个更改密码字段,那么它可能是敏感的)
- 使用会话变量(如您所述!)
- 将变量保存在应用程序的其他位置-自定义数据库字段或用户配置文件或类似文件
就我个人而言,我会选择一个会话提供者,或者尽量避免将内容返回给客户端,如果可能的话,立即返回…我认为您正在寻找
TempData.Keep()
如果myVariable不是一个重要的信息安全性,您可以将其分配到隐藏字段(更改视图)并将其发布到下一个操作请求