我在用户自定义控件里usercontorl里定义了一个public叫str的变量    public Str;
    protected void Page_Load(object sender, EventArgs e)
    {
        Str = "aaaa";
        if (!IsPostBack)
        InitPage();
    }
然后在引用此控件的页面Response.Write(this.Usercontorl1.Str);怎么是空的啊???

解决方案 »

  1.   

     protected override void  OnInit(EventArgs e)
            {
                        Str = "aaaa";
                   base.OnInit(e);
            }
      

  2.   

    如果你的Response.Write(this.Usercontorl1.Str);
    是写在调用页面的page_load里的话,此时控件Page_Load 还没执行.
      

  3.   

    定义成属性,用ViewState保存public string Str
    {
       get
       {
          string str=ViewState["Str"] as string;
          if(string.IsNullOrEmpty(str) == false)
             return str
          else
             return string.Empty;
       }
       set
       {
          ViewState["Str"]=value;
       }
    }
      

  4.   

    对就是把赋值写在page_load里的但是怎么解决呢 ,你写的那个方法我没怎么看明白呢!
      

  5.   

    page中的代码,把Page_Load改为Page_PreRender。
      

  6.   

    用你这种办法还是获得值是空的,正如1楼所说,
    如果你的Response.Write(this.Usercontorl1.Str);
    是写在调用页面的page_load里的话,此时控件Page_Load 还没执行.但是我不知道解决办法!谁能告诉我哦,说详细点哦!
      

  7.   

    Navigation用户控件里:public partial class Navigation : System.Web.UI.UserControl
    {
        public string Str;
        protected void Page_Load(object sender, EventArgs e)
        {
            Str = “aaaaaaaa”;
        }
    }引用页面:
    protected void InitPage()
    {
    Navigation Navigation1 = (Navigation)form1.FindControl("Navigation1");
    string str= Navigation1.Str;
    Response.Write(str);
    }
    protected override void OnInit(EventArgs e)
    {
       Navigation control = (Navigation)this.LoadControl("Navigation.ascx");
       control.ID = "Navigation1";
       form1.Controls.Add(control}
    }
    输出的还是空!
      

  8.   

    你理解反了,在用户控件的OnInitprotected override void OnInit(EventArgs e)
    {
       Str = “aaaaaaaa”;
       base.OnInit(e);
    }
      

  9.   

    那我用户控件里的Page_Load 里还有很多处理的代码呢!
    那些代码写在什么地方啊?
    对啦,你QQ多少哦,我可以加下你么?