2010-07-26 80 views
3

我想让整个我的网站有2个变量可用。我正在解析网址以便检索它们。编写我的第一个VB.NET类

页面本身上此代码工作正常。

Dim countryLanguage As String 
countryLanguage = (Request.ServerVariables("URL")) 
Dim langVar = (Mid(countryLanguage, 2, 2)) 
Dim countryVar = (Mid(countryLanguage, 5, 2)) 

我创建了一个类文件,其代码如下。有了这个,我得到了一个补充错误(BC30451:名称'请求'没有声明。)。

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 

感谢

+1

您是否检查了您的进口? – Kyra 2010-07-26 20:40:03

回答

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)为“烯/“
  • 段(2)是”us /“
+0

问题 我可以在我的页面中得到包含该函数的代码的结果。但是当放置在函数中时,我继续在页面上获得一个变量而不是拖动错误。我是否需要从我的页面以某种方式调用此方法? (我的道歉,如果这是个白痴问题) 感谢 – BillZ 2010-07-26 22:36:27

+0

编辑:原函数需要一些工作;我修好了它。返回字符串需要是“ByRef”而不是重新变暗。没有返回结果存在,所以我将其更改为“Sub”。 – 2010-07-26 22:43:59

+0

我想用下面的代码将此方法调用到我的页面中,但它不起作用。有什么想法吗? Dim globalVars As url_parser = new url_parser(countryLanguage) – BillZ 2010-07-27 22:35:52

4
System.Web.HttpContext.Current.Request 

你的页面会已经进口的System.Web和内部已经引用HttpContext.Current为您服务。在外部类中,您必须确保手动导入名称空间并引用当前上下文。

在一个侧面说明,耦合非页面类页面生命周期的对象(如HttpContext的)被认为是不好的设计。但是为了开始工作,只需要使其工作起来就没有问题。不过,我建议阅读MVC模式和关注分离(和依赖注入)。如果你是一个初学者程序员可能有点先进,但如果你想了很长时间编程认为这是一个值得追求的目标设定上:)

0

你的目光Request对象通常是不可内的简单独立班。

我会建议你通过countryLanguage的字符串值作为从页面类中调用一个额外的变量。

如果你真的必须从类(不recoemmended)中访问Reqeust对象使用:

HttpContext.Current.Request