2012-11-30 34 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; 
    } 
} 
相关问题