如何在课堂上访问浏览器版本

时间:2014-06-13 19:53:14

标签: asp.net vb.net

我正在编写一个vb.net svg工作流查看器,但需要进行浏览器检测以查看是否应恢复为VML或是否支持SVG。我们的目标浏览器是IE,我知道要在VB中检测浏览器版本,您可以执行以下操作:

Dim myBrowserCaps As System.Web.HttpBrowserCapabilities = Request.Browser
If (CType(myBrowserCaps, System.Web.Configuration.HttpCapabilitiesBase)).Browser.ToUpper().IndexOf("IE") >= 0 Then
    labelText = "Browser is Internet Explorer."
Else
    labelText = "Browser is not Internet Explorer."
End If

或类似的东西。

问题是,虽然我可以直接从我的.aspx页面检测浏览器和UserAgent字符串,但是当我将相同的代码放入页面上的webpart所引用的类时(是webpart,它是一个遗留产品) )我收到一个错误。 webpart被很多页面引用,这就是我希望在类中而不是在页面上检测浏览器的原因。

Dim Browser As HttpBrowserCapabilities = Request.Browser
If Browser.Browser = "IE" Then
    'IE Junk
End If

错误只是"'Request' is not declared. It may be inaccessible due to its protection level".

此代码直接从MSDN文档中复制,在我的生活中,我无法找到解释如何或是否可以从类中执行此操作的任何地方。我浏览器Stack,我也浏览了他们的文档无济于事。

我已经尝试了HttpRequest.Browser,但这让我无处可去。

所以,我的两个问题是......

  • 我做错了什么?
  • 访问请求对象时我错过了什么,因为我显然错过了什么?

修改

最初我曾尝试使用当前的上下文,但我做错了。 我试过了:

Dim browser as HttpBrowserCapabilities = HttpContext.Request.Browser

应该是:

Dim browser as HttpBrowserCapabilities = HttpContext.Current.Request.Browser

所以我在语法上(并在理解中)是错误的

我认为这个问题可能仍然有用,因为我无法在其他任何地方找到它。

感谢所有人!

1 个答案:

答案 0 :(得分:2)

Per SLaks注释,必须传入HttpContext才能从请求中访问浏览器。我最终使用了。

 Dim context As HttpContext = HttpContext.Current
 Dim Browser As HttpBrowserCapabilities = context.Request.Browser