编写我的第一个VB.NET类

时间:2010-07-26 20:38:09

标签: vb.net class

我正在尝试在我的网站上提供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

由于

3 个答案:

答案 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 /”,那么......

  • 段(0)是“/”
  • 段(1)是“en /”
  • 段(2)是“us /”

答案 2 :(得分:0)

Request对象通常在一个简单的独立类中不可用。

我建议您将countryLanguage的字符串值作为页面类中调用的附加变量传递。

如果你真的必须从课堂内访问Reqeust对象(未经重新推荐),请使用:

HttpContext.Current.Request