写我的第一堂VB.NET课
我试图在我的网站上提供两个变量。我正在解析URL以便检索它们 页面上的代码本身工作正常写我的第一堂VB.NET课,vb.net,class,Vb.net,Class,我试图在我的网站上提供两个变量。我正在解析URL以便检索它们 页面上的代码本身工作正常 Dim countryLanguage As String countryLanguage = (Request.ServerVariables("URL")) Dim langVar = (Mid(countryLanguage, 2, 2)) Dim countryVar = (Mid(countryLanguage, 5, 2)) 我创建了一个类文件,其代码如下。由此我得到了一个编译错误(BC3045
Dim countryLanguage As String
countryLanguage = (Request.ServerVariables("URL"))
Dim langVar = (Mid(countryLanguage, 2, 2))
Dim countryVar = (Mid(countryLanguage, 5, 2))
我创建了一个类文件,其代码如下。由此我得到了一个编译错误(BC30451:Name'Request'未声明)
谢谢
您的页面已经在导入System.Web,并且已经在内部引用了HttpContext.Current。在外部类中,必须确保手动导入命名空间并引用当前上下文
另一方面,将非页面类耦合到页面生命周期对象(如HttpContext)被认为是糟糕的设计。但是对于开始来说,只要让它工作就好了。但是,我建议大家阅读MVC模式和关注点分离(以及依赖项注入)。如果你是一个初学者程序员,它可能有点先进,但是如果你想长时间编程,就认为它是一个有价值的目标:(< p>)在一个简单的独立类中,请求对象通常是不可用的。 我建议您将countryLanguage的字符串值作为来自page类调用的附加变量传递 如果您确实必须从类内访问Reqeust对象(未重新编译),请使用:
您可以使用
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/”,则
- 段(0)为“/”
- 第(1)段为“en/”
- 第(2)段为“美国/”
HttpContext.Current.Request
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