2009-10-13 57 views
0

我的ASP.Net项目中有两个用户控件,一个用于Internet Explorer 6(IE6),另一个用于浏览器不是IE6时使用。根据浏览器确定要调用哪个用户控件

我该如何去设置它,以便发生这种情况;这是我可以放在主页面上的东西吗?

回答

2

您可以通过使用Browser property of the HttpRequest object来实现此目的。

您的页面可以在设计时同时拥有两个用户控件,然后在运行时检查Request.Browser属性以确定客户端的浏览器并以编程方式隐藏您不希望用户看到的用户控件。
或者,您可以纯粹从您的服务器端代码实例化并呈现正确的用户控件(再次检查Request.Browser属性后)。

例如,运行下面的代码:在Internet Explorer 7,并运行时

IE7

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write(Request.Browser.Type.ToString()); 

    } 
} 

在 “标准的” ASPX页面显示:

火fox3.5.3

(当在Firefox上运行)

所以,你可以有代码像在网页下面要添加此功能:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.Browser.Type.ToString().ToLower().Contains("ie")) 
     { 
      // User's browser is Internet Explorer. 
      // Let's hide UserControl1 but display UserControl1 
      WebUserControl1.Visible = false; 
      WebUserControl2.Visible = true; 
     } 
     else 
     { 
      // User's browser is something other than Internet Explorer. 
      // Let's hide UserControl2 but display UserControl1. 
      WebUserControl1.Visible = true; 
      WebUserControl2.Visible = false; 
     } 
    } 
} 
+0

真棒解决方案,谢谢! – Goober 2009-10-13 20:50:12

1

为了让你可以使用浏览器:在您的content.master的代码隐藏页的请求头找出哪些浏览器

Response.Write(Request.Browser.Browser.ToString()); 
Response.Write(Request.Browser.Version.ToString()); 
2

嗅嗅,并设置控件的Visible属性,你唐't想用来做假。假设这两个控件是由母版页自己托管的。如果他们只出现在某些页面上,那么您可以做同样的事情,但在这些单独的页面而不是母版页中。

+0

从提出问题的方式来看,似乎这些用户控件包含在主页内。 – 2009-10-13 14:52:47

0

您可以使用JavaScript导航器对象。将它们封装到div中,然后隐藏它们或使用jQuery显示它们。

+0

根据控件的性质,可能会太“沉重”以致无时无刻都在渲染,并让UI隐藏其中一个。尽管如此,仍是一个可行的解决方案 – 2009-10-13 15:00:19

相关问题