本人没有做过C#,遇到一个小问题,请大虾指教。
public partial class WebForm1 : System.Web.UI.Page
{
public string name = ""; protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
name = "ggg";
}
protected void Button2_Click(object sender, EventArgs e)
{
Label1.Text = name;
}
}
这个name在button2点击时为空,怎么回事?
public partial class WebForm1 : System.Web.UI.Page
{
public string name = ""; protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
name = "ggg";
}
protected void Button2_Click(object sender, EventArgs e)
{
Label1.Text = name;
}
}
这个name在button2点击时为空,怎么回事?
{ }
protected void Button1_Click(object sender, EventArgs e)
{
name = "ggg";
}
protected void Button2_Click(object sender, EventArgs e)
{
Label1.Text = name;
}
楼主你看,你在点击2时,你的1没有执行又,name本来就是“”
所以肯定是“”而且就算你点了1,执行完后页面回传
像这种情况可以这样使用
protected void Page_Load(object sender, EventArgs e)
{
if(ViewState["name"]!=null)
{
Label1.Text = ViewState["name"].ToString();
} }
protected void Button1_Click(object sender, EventArgs e)
{
string name = "ggg";
ViewState["name"]=name;
}
protected void Button2_Click(object sender, EventArgs e)
{
if(ViewState["name"]!=null)
{
Label1.Text = ViewState["name"].ToString();
}
}
asp.net每一次处理一个页面请求,都是创建一个新的页面对象。一个页面的生命周期只有一瞬间,当它输出html之后页面对象就销毁了。然后当用户从浏览器端点击触发事件而引起回发,asp.net系统又重建一个新的页面实例,然后自动恢复页面上各种ViewState值,这样你才能感到似乎类似Winform似地状态被持久化着。因此没有保存到ViewState中的数据,也随着页面对象的销毁而毫无意义了。下一次回发时其实就随着新的对象的创建而初始化了变量。如果你能有机会正规地学asp.net,你最好找一个能给你围绕这个机制来介绍的。
{
get
{
object nm= ViewState["nm"];
return nm==null? string.Empty: (string)nm;
}
set
{
ViewState["nm"]= value;
}
}其它地方不用做任何修改。