确定基于浏览器调用哪个用户控件

时间:2009-10-13 14:45:26

标签: .net asp.net user-controls internet-explorer-6

我的ASP.Net项目中有两个用户控件,一个明确用于Internet Explorer 6(IE6),另一个用户浏览器不是IE6时应该使用。

我如何设置它以便发生这种情况;这是我可以放在母版页中的东西吗?

4 个答案:

答案 0 :(得分:2)

在您的content.master的代码隐藏页面中嗅探请求标头,找出哪个浏览器,并将您想要使用的控件上的Visible属性设置为false。假设这两个控件由母版页本身托管。如果它们只出现在某些页面上,那么你可以做同样的事情,但是在那些单独的页面而不是母版页中。

答案 1 :(得分:2)

您可以使用Browser property of the HttpRequest object

来实现此目的

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

例如,运行以下代码:

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

    }
}

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

  

IE7

在Internet Explorer 7中运行时,并且:

  

Firefox3.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;
        }
    }
}

答案 2 :(得分:1)

要获得可以使用的浏览器:

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

答案 3 :(得分:0)

您可以使用javascript导航器对象。将它们包装成div然后隐藏它们或使用jQuery显示它们。