如何在asp.net mvc中显示浏览器类型?

时间:2018-05-02 17:23:24

标签: c# asp.net-mvc internet-explorer-9

我在我的项目中使用了许多css和javascript,它们不仅仅支持IE9浏览器,

所以我为所有视图创建了两个版本,没有css和javascript的IE浏览器的第一个版本,以及执行所有css和javascript的其他浏览器的第二个版本。

我想如果用户浏览器是IE9(仅限版本9),则显示第一个视图,否则显示第二个视图。

2 个答案:

答案 0 :(得分:2)

您必须在mvc中使用Custom DisplayMode,在浏览器中使用User-agent。

任何浏览器都有一个唯一的用户代理,Internet Explorer 9就是" MSIE 9"。

如果视图名称是First.cshtml,

创建名称为:First.IE9.cshtml

的视图

和global.asax

auth0-js

答案 1 :(得分:0)

在您的Controller中,您可以检查请求的UserAgent属性。

HttpContext.Current.Request.UserAgent

完整代码示例:

private const string IEUserAgent = "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)";

public ActionResult Index()
{
    string userAgent = HttpContext.Current.Request.UserAgent;

    if (userAgent == IEUserAgent) 
    {
       return View("IE9View");
    }

    return View();
}

您可能希望将UserAgent字符串封装在常量文件中,该文件将提供更合适的位置而不是控制器级别。

另一种方法是在Global.asax中使用DisplayModeProvider

DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("IE9")  
{  
    ContextCondition = (ctx => ctx.GetOverriddenUserAgent()  
    .IndexOf("MSIE 9", StringComparison.OrdinalIgnoreCase) > 0)     
});  

然后,您将在应用程序的“查看”部分中创建一个Index.IE9.cshtml文件,其中包含要使用Internet Explorer 9向用户显示的标记。