簡體   English   中英

更新的變量不保持其更新值

[英]Updated variable doesn't maintain it's updated value

我有一個名為topic的字典,該字典會初始化,然后像這樣在Page_Load中分配變量。

public partial class index : System.Web.UI.Page
{
    public static Dictionary<string, bool> topics { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        topics = new Dictionary<string, bool>
        {
            {"Books", false},
            {"Bikes", false},
            {"Binders", false},
        };
    }

 //...

}

然后單擊按鈕,我嘗試反轉其中一個詞典項,並在警報中顯示其值。

 protected void Button4_Click(object sender, EventArgs e)
    {
        topics["Books"] = !topics["Books"];

        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),    
        "alert", "alert('" + topics["Books"] + "');" + slider, true);
    {

警報“ true”告訴我該函數中的值已更改,但是,當我再次單擊時,我再次得到“ true”,這告訴我該函數結束后不再維護更新。

我怎樣才能使此更新堅持下去?

似乎您在每個頁面加載上都重新初始化了主題詞典。 如果將!IsPostBack放在初始化它的代碼周圍,則不會每次都重新初始化。 但是,我不確定在不進一步了解要完成的工作的情況下這是處理此問題的最佳方法。 像這樣確定是否初始化topics時,最好檢查topics是否為空:

if ((topics == null)) {
    topics = new Dictionary<string, bool>
    {
        {"Books", false},
        {"Bikes", false},
        {"Binders", false},
    };
}

根據您的解釋和所見,您正在嘗試在不使用任何持久性機制的情況下跨頁面請求持久化數據,因此,發生的情況是在每個頁面請求上重新初始化了“主題字典”,這就是為什么失去價值。 盡管不確定在asp.net中是如何完成的,但是您應該做的是使用高速緩存,數據庫來持久保存字典,或者在asp.net的情況下使用viewstate來保持正確,以便該值可以在多個請求中保留下來。

暫無
暫無

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

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