当前位置:编程学习 > C#/ASP.NET >>

LoadControl 和 RenderControl 问题

我自做了一个用户控件  里面有几个属性  ID   NAME之类的  
根据这几个属性的不同,控件会产生不同的变化  可见不可见,内容不同 之类 
但是我用  LoadControl 加载了之后  设置了 ID  NAME 属性  再用  RenderControl   得到他的HTML代码之后 发现 我设置的属性没有起效  返回的HTML是控件的 初始状态的HTML  这种情况怎么解决呢?
 UCcontrol uc = (UCcontrol )LoadControl("../UIControl/UCcontrol.ascx");
            uc.ID= 123;
            uc.Name= "sdfsd";   
            htmlWriter.Flush();
            string result;
            try
            {
                uc.RenderControl(htmlWriter);
            }
            catch { }
            finally
            {
                htmlWriter.Flush();
                result = build.ToString();
            }
            return result; --------------------编程问答-------------------- 只能自己顶一下了... --------------------编程问答-------------------- http://blog.csdn.net/bigstoneasd/archive/2008/02/01/2076202.aspx --------------------编程问答-------------------- UCcontrol uc = (UCcontrol )LoadControl("../UIControl/UCcontrol.ascx");
this.Controls.Add(uc);
--------------------编程问答-------------------- 看了2楼给的链接  知道是缓存的问题  但具体还是不大明白  能略微讲讲么? --------------------编程问答-------------------- private UControl uc;

protected override void CreateChildControls()
{
  uc=(UControl)LoadControl("../UIControl/UCcontrol.ascx");
  Controls.Add(uc);
  this.ChildControlsCreated = true;
  base.CreateChildControls();
}

protected override void Render(HtmlTextWriter writer)
{
  uc.RenderControl(writer);
  base.Render(writer);
}

protected void Page_Load(sender,e)
{
  if(!IsPostBack)
  {
   EnsureChildControls();
   uc.Name="修改后的Name";
  }
} --------------------编程问答-------------------- 问题是  我不需要在页面上添加这个控件  只要这个控件的HTML代码   Controls.Add(uc); 不就加进来了么  我只需要在页面加载的时候  获得这个控件的HTML代码  不要把这个控件加到我的页面里来...

还有  我请问一下  为什么要重写Render ?? 直接用uc.RenderControl(writer) 不就好了? --------------------编程问答-------------------- 刚才详细看了一下  我自己做的控件没有设置缓存啊...  2楼给的链接也不大对 --------------------编程问答-------------------- 你用户控件的内容是什么 --------------------编程问答-------------------- 根据这几个属性的不同,控件会产生不同的变化 可见不可见,内容不同 之类
你可以理解为一个小内容的网页而已 --------------------编程问答-------------------- 你只需要将用户控件加入到容器就可以了
UCcontrol uc = (UCcontrol )LoadControl("../UIControl/UCcontrol.ascx");
uc.ID= 123;
.....
......
this.Controls.Add(uc);
--------------------编程问答-------------------- 我只要里面的html....就因为没加入到容器出了问题 才问呀... --------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,