簡體   English   中英

當我在MVC中回發時如何維護視圖中的值

[英]How to maintain the values in view when i do postback in MVC

我的頁面中有一些控件,當頁面第一次加載時,值是從數據庫中獲取並放置在相應的控件中的。 當我再次單擊另一個按鈕時,它將轉到控制器並從數據庫中獲取值並綁定gridview。 我的模型有3個班級,第2和第3班級則包在第一個班級中。 當我在gridview中綁定第二個類時,那一次第一類變為null,因此所有值都變為null並僅綁定gridview。 如何解決這個問題。

同樣,HTTP是無狀態的,除非您將當前模型存儲在像session這樣的持久性介質中,否則它將在回發中丟失!

如果我理解您的問題對!

首次綁定類時,請將其放入Session變量中,然后將其返回到視圖中,然后在單擊其他按鈕進行第二次發布時,請確保在操作方法中檢索Session var,然后分配會話var中的類的新值,而不是僅僅認為舊值仍然存在就返回新值。

如果我了解您的要求,則可以將其存儲在TempData中。 TempData將持續到下一個請求。

public class YourView
{
    public ActionResult Index()
    {
        string firstName = "Stephen";
        TempData["FirstName"] = firstName;
        return View();
    }

    public void ButtonClicked()
    {
        string firstName = (string)TempData["FirstName"];
    }
}

請注意,盡管臨時數據僅持續到下一個請求。 因此,要使其正常工作,在加載視圖之后,下一個調用將必須是ButtonClicked調用。

控制器是無狀態的,因此如果您需要保留更長的時間,則必須使其變得有點TempData["FirstName"] = TempData["FirstName"]和丑陋,就像在每個位置都會調用此TempData["FirstName"] = TempData["FirstName"] ,直到需要使用該值。 就像我說的那樣,我不建議這樣做(或者在這種情況下使用Session ),但是如果您需要這樣做,那么我認為這是最安全的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM