写我的第一堂VB.NET课

写我的第一堂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

我试图在我的网站上提供两个变量。我正在解析URL以便检索它们

页面上的代码本身工作正常

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)段为“美国/”

问题我可以在我的页面中使用函数包含的代码获得结果。但是当我把它放在函数中时,我的页面上会继续出现一个变量not delared错误。我需要从我的页面调用这个方法吗?(如果这是一个愚蠢的问题,我很抱歉)谢谢:原始函数需要一些工作;我修好了。返回字符串需要为“ByRef”,并且不能重新变暗。不存在返回结果,所以我将其更改为“Sub”。我尝试使用下面的代码将此方法调用到我的页面中,但它不起作用。有什么想法吗?Dim globalVars As url_parser=新的url_解析器(countryLanguage),如果您只想使用共享函数,则不需要构造类。编辑:我重写了上面的代码,将两个数据元素分离成单独的函数,绕过了ByRef参数的需要。非常感谢您的帮助!
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