我正在尝试在我的网站上提供2个变量。我正在解析URL以便检索它们。
页面上的这段代码本身运行正常。
Dim countryLanguage As String
countryLanguage = (Request.ServerVariables("URL"))
Dim langVar = (Mid(countryLanguage, 2, 2))
Dim countryVar = (Mid(countryLanguage, 5, 2))
我已经创建了一个类文件,其代码如下所示。有了这个,我得到了一个complilation错误(BC30451:名称'Request'未声明。)。
Public Class url_parser
Public Shared Function urlVars(ByVal langVar, ByVal countryVar) As String
Dim countryLanguage As String
countryLanguage = (Request.ServerVariables("URL"))
Dim langVar = (Mid(countryLanguage, 2, 2))
Dim countryVar = (Mid(countryLanguage, 5, 2))
End Function
End Class
由于
答案 0 :(得分:4)
System.Web.HttpContext.Current.Request
您的页面已经在导入System.Web并且已经在内部引用了HttpContext.Current。在外部类中,您必须确保手动导入命名空间并引用当前上下文。
另外,将非页面类与页面生命周期对象(例如HttpContext)耦合起来被认为是糟糕的设计。但是为了开始它只是为了使它工作。但是,我建议阅读MVC模式和Separation Of Concerns(和依赖注入)。如果你是一名初学程序员,它可能会有点高级,但是如果你想长时间编程,那就认为这是一个值得我们着眼的目标:)
答案 1 :(得分:1)
您可以使用System.Web.HttpContext.Current.Request
获取当前线程的请求对象。
获取国家/地区和语言文件夹的更好方法是使用Request.Url.Segments
。
Public Class url_parser
Public Shared Function urlLanguage() As String
Dim Request = Web.HttpContext.Current.Request
Return Request.Url.Segments(1).TrimEnd("/"c)
End Function
Public Shared Function urlCountry() As String
Dim Request = Web.HttpContext.Current.Request
Return Request.Url.Segments(2).TrimEnd("/"c)
End Function
End Class
以这种方式访问这些静态函数。
Dim MyLanguage = url_parser.urlLanguage
Dim MyCountry = url_parser.urlCountry
在此示例中,如果Url是“/ en / us /”,那么......
答案 2 :(得分:0)
Request对象通常在一个简单的独立类中不可用。
我建议您将countryLanguage的字符串值作为页面类中调用的附加变量传递。
如果你真的必须从课堂内访问Reqeust对象(未经重新推荐),请使用:
HttpContext.Current.Request