簡體   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