当前位置: 代码迷 >> ASP.NET >> 用户控件显示不出来了!该怎么处理
  详细解决方案

用户控件显示不出来了!该怎么处理

热度:4486   发布时间:2013-02-25 00:00:00.0
用户控件显示不出来了!
在一个页面中,根据用户是否登录来显示对话框,后台代码如下:
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);
  相关解决方案