在asp.net-mvc中,有没有办法区分处于兼容模式的IE7用户和IE8用户?

leo*_*ora 6 asp.net-mvc upgrade internet-explorer-7 conditional-statements

对于IE7用户,我想提出一些具体的"请立即升级"横幅.我以为我有这个,但我发现我的横幅出现在拥有IE8但默认启用了兼容模式的人身上.

无论如何要区分这两种情况,以便我可以改变我的信息:

请从IE7更新您使用的是IE8,但是您使用的是兼容模式,请关闭它

这是我现在在我的视图中使用的代码:

You are using <b><% = Request.Browser.Browser + ", Version: " + Request.Browser.Version%>
Run Code Online (Sandbox Code Playgroud)

但如果我在IE8中使用兼容性视图进行测试,则在客户端使用上面的代码或此代码:

<!--[if lte IE 7]>
Run Code Online (Sandbox Code Playgroud)

它返回true并显示为IE7.我如何区分这两者?

MrG*_*mez 7

根据user-agents.org其他答案链接的一些讨论,您可以通过检查您收到的用户代理字符串来区分这三种情况.

  • 对于MSIE 7.0:检查MSIE 7.0和缺少Trident

    例如: Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 5.1; GTB5; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727)

  • 对于MSIE 8.0兼容模式:检查MSIE 7.0存在Trident/4.0

    例如: Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 6.1;Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)

  • 对于标准模式下的MSIE 8.0:检查MSIE 8.0

    例如: Mozilla/4.0 (compatible;MSIE 8.0;Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)

要执行这些检查,请参阅以下教程,将所有关于iPhone和移动设备的废话替换为您要检查的浏览器.:)

祝你的应用好运.