如何在 asp.net mvc 中按浏览器类型显示视图?
how to display View by browser type in asp.net mvc?
我在我的项目中使用了很多 css 和 javascript,但仅支持 IE9 浏览器,
所以我为所有视图创建了两个版本,第一个版本用于没有 css 和 javascript 的 IE 浏览器,第二个版本用于其他浏览器的所有视图 css 和javascript.
我想如果用户浏览器是 IE9(仅版本 9)则显示第一个视图,否则显示第二个视图。
在您的控制器中,您可以检查请求的 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 的用户显示的标记。
您必须在 mvc 中使用 Custom DisplayMode,在浏览器中使用 User-agent。
任何浏览器都有唯一的用户代理,Internet Explorer 9 就是 "MSIE 9"。
如果视图名称是 First.cshtml,
创建名为:First 的视图。IE9.cshtml
并在 global.asax
protected void Application_Start(){
//other code
DisplayModeProvider.Instance.Modes.Insert(0,new DefaultDisplayMode("IE9")
{
ContextCondition=context=> context.request.UserAgent.Contains("MSIE 9")
});
}
我在我的项目中使用了很多 css 和 javascript,但仅支持 IE9 浏览器,
所以我为所有视图创建了两个版本,第一个版本用于没有 css 和 javascript 的 IE 浏览器,第二个版本用于其他浏览器的所有视图 css 和javascript.
我想如果用户浏览器是 IE9(仅版本 9)则显示第一个视图,否则显示第二个视图。
在您的控制器中,您可以检查请求的 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
中使用 DisplayModeProviderDisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("IE9")
{
ContextCondition = (ctx => ctx.GetOverriddenUserAgent()
.IndexOf("MSIE 9", StringComparison.OrdinalIgnoreCase) > 0)
});
然后您可以在应用程序的视图部分创建一个 Index.IE9.cshtml 文件,其中包含要向使用 Internet Explorer 9 的用户显示的标记。
您必须在 mvc 中使用 Custom DisplayMode,在浏览器中使用 User-agent。
任何浏览器都有唯一的用户代理,Internet Explorer 9 就是 "MSIE 9"。
如果视图名称是 First.cshtml,
创建名为:First 的视图。IE9.cshtml
并在 global.asax
protected void Application_Start(){
//other code
DisplayModeProvider.Instance.Modes.Insert(0,new DefaultDisplayMode("IE9")
{
ContextCondition=context=> context.request.UserAgent.Contains("MSIE 9")
});
}