繁体   English   中英

ASP.NET MVC:重新分配TempData

[英]ASP.NET MVC: reassign TempData

在控制器操作中,我从TempData变量中的重定向接收到一个变量

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”]为null。 也许我在做一些愚蠢的事情,但是如何获得想要的结果呢? 我不想使用Session变量(它将持续更长的时间,并且我将手动确保清除该变量以防止污染Session变量)。 我可以通过表单(一个隐藏的变量)将其重新发布,但我更希望将变量保留在服务器端。

我认为您正在寻找TempData.Keep()

TempData仅在当前请求的上下文中保留。 如果您要向客户端返回内容,然后客户端回发,则不能使用它。 您的选择是非常标准的,基本上只按照您的描述进行:

  • 使用表单变量(如您所述-我猜测如果它是更改密码字段,那么它可能很敏感)
  • 使用会话变量(也如您所说!)
  • 在应用程序中的其他位置保留变量-自定义数据库字段或用户配置文件或类似内容

就个人而言,我将与会话提供者一起使用,或者尝试避免将内容与立即回发的内容一起全部返回给客户端,如果可能的话...

如果myVariable不是关键的信息安全性,则可以将其保留到“隐藏”字段(更改视图)并将其发布到下一个操作请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM