2012-11-30 35 views
0

嗨我想改變應用程序變量Global.asax以外的變量,但以前的數據似乎再次出現。有什麼方法可以改變變量的值或重置它。謝謝...如何在Global.asax之外更改應用程序變量?

In Global.asax : 

void Application_Start(object sender, EventArgs e) 
{ 
    Application["abc"] = ""; 
} 

In aspx.cs page : 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     ViewState["countmsg"] = 0; 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ViewState["countmsg"] = Convert.ToInt32(ViewState["countmsg"]) +1; 
    Application["abc"] = Application["abc"] + "hello" + Environment.NewLine; 
    string str = Application["abc"].ToString(); 
    if (Convert.ToInt32(ViewState["countmsg"]) >= 4) 
    { 
     Application["abc"] = ""; // here the reset is not working 
     ViewState["countmsg"] = 0; 
    } 
} 
+0

請張貼一些代碼。什麼變量?哪裏? –

+0

工作進程/ AppDomain可以重新啓動;並且可以爲後續請求使用不同的進程。如果沒有設置每個請求(就像通常在「global.asax」中完成的那樣),即使「靜態」變量值也不會被「遺忘」。因此,「靜態」變量通常不是持久/存儲數據的好方法。但是,謝天謝地,根據用例,可能會有其他方法*顯示當前代碼! – 2012-11-30 05:26:05

+0

@pst先生,您能幫我選擇合適的方法嗎? –

回答

0
protected void Button1_Click(object sender, EventArgs e) 
{ 
    ViewState["countmsg"] = Convert.ToInt32(ViewState["countmsg"]) +1; 
    Application["abc"] = Application["abc"] + "hello" + Environment.NewLine; 
    string str = Application["abc"].ToString(); 

    if (Convert.ToInt32(ViewState["countmsg"]) >= 4) 
    { 
    Application.Lock(); 
    Application["abc"] = ""; // now its working 
    Application.UnLock(); 
    ViewState["countmsg"] = 0; 
    } 
} 
相關問題