2011-09-09 39 views
2

在控制器的行動我收到重定向變量在TempData的變量ASP.NET MVC:重新分配的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」]爲空。也許我在做一些愚蠢的事情,但是如何得到想要的結果呢?我不想使用Session變量(它會持續更長的時間,我會努力確保手動清除該變量以防止會話變量的污染)。我可以通過表單(一個隱藏的變量)重新發布它,但我更願意只將變量保留在服務器端。

回答

4

我認爲你正在尋找TempData.Keep()

0

TempData僅在當前請求的上下文中持續存在。如果您將內容返回給客戶端,然後客戶端發回,則無法使用該內容。你的選擇是非常標準的,基本上只爲你描述:

  • 使用表單變量(如你所說 - 我猜,如果是更改密碼字段,則它可能是敏感)
  • 使用會話變量(如你還說!)
  • 別處堅持變量在您的應用程序 - 自定義數據庫字段或用戶配置文件或類似

個人而言,我會去與會話提供商,還是儘量避免返回內容如果可能的話,請立即回覆客戶樂...

0

如果MYVARIABLE是不是可以將其persit爲隱藏字段中的關鍵信息安全(更改視圖),並將其發佈到下一個動作的要求。