我正在尝试确定浏览器是否是服务器端的ASP.NET核心中的Internet Explorer。
在我的cshtml中以前的ASP.NET 4版本中:
@if (Request.Browser.Browser == "IE")
{
//show some content
}
但是在ASP.NET 5/ASP.NETCore intellisense for Context.Request
中没有Browser
选项
我可以得到UserAgent,但这似乎相当复杂,因为IE有许多类型的字符串
Context.Request.Headers["User-Agent"]
对于Internet Explorer 11.0,我得到
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
这使得很难从它中确定任何过去、现在或将来的IE版本。
发布于 2016-05-13 20:27:48
我觉得有责任说,如果可以的话,最好尽量避免服务器端的浏览器嗅探。但我完全意识到,有时它可能是有帮助的。所以..。
根据这个列表http://www.useragentstring.com/pages/useragentstring.php?name=Internet+Explorer,它看起来像是几乎所有版本的it的UserAgent都包含MSIE,所以这将是你想要寻找的主要内容。
有趣的是,当查看此IE用户代理列表时,您观察到的用户代理是极少数不包含MSIE的用户代理之一。如果您检查用户代理中是否存在MSIE或Trident,这应该可以很好地识别Internet Explorer的所有情况。
(Trident是支持Internet Explorer的布局引擎,它仅用于Internet Explorer)
因此,例如,用于确定浏览器是否为IE的代码可以编写为:
public static bool IsInternetExplorer(string userAgent) {
if(userAgent.Contains("MSIE") || userAgent.Contains("Trident")) {
return true;
} else {
return false;
}
}
这可以从控制器内部调用,如下所示:
string userAgent = Request.Headers["User-Agent"];
if(IsInternetExplorer(userAgent)) {
//Do your special IE stuff here
} else {
//Do your non IE stuff here
}
发布于 2019-11-19 01:12:56
在ASP.NET核心页和ASP.NET Core Blazor中,您可以使用以下内容:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
// ...
}
SomeComponent.razor
@inject IHttpContextAccessor HttpContextAccessor
@if (HttpContextAccessor.HttpContext != null
&& HttpContextAccessor.HttpContext.Request.IsInternetExplorer())
{
<input type="text" @bind="ViewModel.TextInput" />
}
else
{
<input type="date" @bind="ViewModel.DateTimeInput" />
}
HttpRequestExtensions.cs
public static class HttpRequestExtensions
{
public static bool IsInternetExplorer(this HttpRequest request)
{
return IsInternetExplorer(request.Headers["User-Agent"]);
}
private static bool IsInternetExplorer(string userAgent)
{
return userAgent.Contains("MSIE")
|| userAgent.Contains("Trident");
}
}
发布于 2018-02-23 04:08:02
我使用了一个扩展方法来评估这一点:
public static bool IsInternetExplorer(string userAgent)
{
return (userAgent.Contains("MSIE") || userAgent.Contains("Trident"));
}
// Extension for Request
public static bool IsInternetExplorer(this HttpRequestBase req)
{
return IsInternetExplorer(req.Headers["User-Agent"]);
}
用法:
if (Request.IsInternetExplorer())
{
// Do something microsofty
}
(基于Ron C的回答)
https://stackoverflow.com/questions/37206185
复制相似问题