用户控件显示不出来了!
在一个页面中,根据用户是否登录来显示对话框,后台代码如下: 
 m_strLogin   已定义为public, 
 if   (Session[ "user "]   !=   null) 
 { 
                m_strLogin   =    " <uc1:left2   id=\ "Left21\ "   runat=\ "server\ ">  </uc1:left2>  "; 
 } 
 else 
 { 
                m_strLogin   =    " <uc1:left   id=\ "Left1\ "   runat=\ "server\ ">  </uc1:left>  "; 
 } 
 aspx页面: 
  <%@   Register   TagPrefix= "uc1 "   TagName= "left "   Src= "../UserControl/left.ascx "   %>  
  <%@   Register   TagPrefix= "uc1 "   TagName= "left2 "   Src= "../UserControl/left2.ascx "   %>  
 在某处插入 
  <%=   m_strLogin   %>  
 但是这个控件并没有显示处理,看了html代码,在这个位置变成了 " <uc1:left   id= "Left1 "   runat= "server ">  </uc1:left> ,只是简单的字符替换,没有把控件的源代码加载过来,这个怎么改进?谢谢了
------解决方案-------------------- <%= m_strLogin %>   这样是显示html到浏览器.
你可以用动态加载控件
Control c = this.LoadControl( "aa.aspx ");
this.Panel1.Contorls.Add(c);
------解决方案--------------------runat=\ "server\ "的服务器控件不能直接这样设置,必须使用LoadControl来动态加载
------解决方案--------------------其实你这样情况,这样设计更方便写,把2个控件都拖放在页面上, 
 然后判断用户是否登入来控制1个控件显示,1个控件隐藏就好了。
------解决方案--------------------根据判断加载哪个用户控件好了   
 就是慕白兄的意思
------解决方案--------------------其实你这样情况,这样设计更方便写,把2个控件都拖放在页面上, 
 然后判断用户是否登入来控制1个控件显示,1个控件隐藏就好了。   
 我也觉得这样的方案更可行,毕竟每个系统的登陆都不会完全相同
------解决方案--------------------1. 简单、容易方式   
 拖拽所有目标用户控件到页面   
 根据条件控制其 Visible=false; // true     
 2. 有经验者,可考虑使用 LoadControl  动态加载   
 // .aspx 
  <asp:panel id=Panel1 ...     
 // .aspx.cs 
 UserControl uc = Session[ "user "] != null ? LoadControl(.ascx文件A的虚拟路径) : LoadControl(.ascx文件B的虚拟路径); 
 Panel1.Controls.Add(uc);