Asp.net-Mvc

在 ASP.NET MVC 中使用 Tempdata - 最佳實踐

  • September 14, 2012

我正在使用 ASP.NET MVC 3 來建構一個 Web 應用程序。

我想做的是在兩個控制器之間傳遞值,儘管有很多方法可以做到這一點,我對此特別感興趣TempData

public ActionResult Action1()
{
   string someMessage;
   Test obj = SomeOperation();
   if(obj.Valid)
   {
       someMessage = obj.UserName;
   }
   else
   {
       someMessage = obj.ModeratorName;
   }

   TempData["message"] = someMessage;

   return RedirectToAction("Index");
}

public ActionResult Index()
{
   ViewBag.Message = TempData["message"]

   return View();
}

那麼TempDatahere的使用正確嗎?我的意思是在最佳程式實踐下,這是正確的使用方式TempData嗎?

在什麼實時情況下應該TempData使用?

**注意:**我已經瀏覽了以下連結

謝謝

TempData是一個儲存桶,您可以在其中轉儲僅以下請求所需的數據。也就是說,在下一個請求完成後,您放入 TempData 的任何內容都會被丟棄。這對於一次性消息很有用,例如表單驗證錯誤。這裡需要注意的重要一點是,這適用於會話中的下一個請求,因此該請求可能發生在不同的瀏覽器視窗或選項卡中。

回答您的具體問題:沒有正確的使用方法。這完全取決於可用性和便利性。如果它有效,有意義並且其他人相對容易理解它,那很好。在您的特定情況下,以這種方式傳遞參數很好,但奇怪的是您需要這樣做(程式碼氣味?)。我寧願在資源(如果它是資源)或數據庫(如果它是持久值)中保留這樣的值。從您的使用情況來看,它似乎是一種資源,因為您將它用於頁面標題。

希望這可以幫助。

引用自:https://stackoverflow.com/questions/12422930