页面获取用户自定义控件的动态变量值

博斯腾湖天龙马 2014-08-31 08:58:00
我定义一个用户控件,里面有很多操作,最后保存一个HashTable 然后我做一个实验
在自定义控件的页面
aspx页面

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

.cs页面

public partial class WebUserControl1 : System.Web.UI.UserControl
{
public static string str="1234";

public string Str
{
get { return str; }
set { str = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

}
}

protected void Button1_Click(object sender, EventArgs e)
{
Str = "123";

}
}






然后我在放自定义控件的页面中调用获取的值还是1234为什么

调用页面的.aspx文件

<uc2:WebUserControl1 ID="WebUserControl11" runat="server" />
<asp:Button ID="Button1" runat="server" Text="查看数据" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>



后台.cs文件


public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

}
}

protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = WebUserControl11.Str;
}
}



怎么才能获取的是123
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
如果要设置初始化值为1234,那么你应该在 page_load 中判断 !IsPostback,这个时候才设置。否则不能设置。 注意这是asp.net,不是winform或者wpf/silverlight。web程序是无状态的,必须用 ViewState 来模拟有状态的 winform 程序才行。
非常感谢,get set方法里用viewstate就可以了 希望以后可以经常交流
  • 打赏
  • 举报
回复
引用 1 楼 jjkk168 的回复:
请注意页面生命周期。每次你发送一个动作,实际上都是在后台将你对应的类初始化一次再按顺序执行操作,操作完成以后,生成 HTML输出到电脑,自此,这个类的生命周期就完结了,死了。 如果想要你的值在前后均有保留,你需要使用ViewState/Session/Cookies或数据库来保存你的前后记录。
非常感谢,get set方法里用viewstate就可以了
  • 打赏
  • 举报
回复
如果要设置初始化值为1234,那么你应该在 page_load 中判断 !IsPostback,这个时候才设置。否则不能设置。 注意这是asp.net,不是winform或者wpf/silverlight。web程序是无状态的,必须用 ViewState 来模拟有状态的 winform 程序才行。
  • 打赏
  • 举报
回复
页面状态要使用 ViewState 来实现。 例如
 

        public string Str
        {
            get { EnsureChildControls();  return (string)ViewState["str"];  }
            set { EnsureChildControls();  ViewState["str"] = value; }
        }
还想懒够 2014-08-31
  • 打赏
  • 举报
回复
请注意页面生命周期。每次你发送一个动作,实际上都是在后台将你对应的类初始化一次再按顺序执行操作,操作完成以后,生成 HTML输出到电脑,自此,这个类的生命周期就完结了,死了。 如果想要你的值在前后均有保留,你需要使用ViewState/Session/Cookies或数据库来保存你的前后记录。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧