asp.net用户控件的公共属性可以用特性声明的方式赋值,如 <uc1:WebUserControl1 runat="server" id="WebUserControl1" Projectid="20191204153020" />,
这种情况下,无论是用户控件本身的postback还是父页面的postback,均可以正常使用这个值。
但是如果在父页面的page_load事件的 !ispostback代码块里赋值,如
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { WebUserControl2.Projectid = 20200610101559; } }
则在控件的postback里,取不到这个值,如
protected void Button1_Click(object sender, EventArgs e) { Button1.Text =projectid.ToString(); }
以上代码取到的projectid值为0。
对这个问题的解决方法有两种:
1,父页面在page_load里赋值时,不要放在!ispostback块,
2,自行保存,如在用户控件里增加隐藏域。