我想要做的是获取地址栏的全部内容,看看站点路径后面的所有内容(即问号后面的所有内容)是否包含某个字符串,如果是,则返回使用该站点的路径URL和该字符串。
使事情易于理解的示例和一些代码:
如果我在www.example.com/?blah=image
,我希望代码查找字符串image
(在问号后面以防止名称中带有图片的网站搞砸了)以及是否存在返回www.example.com/images/
(当前域名被查找而不是手动编写,因为这将在多个站点上使用)
以下是我到目前为止所写的内容。
Public ReadOnly Property StorageRoot() As String
Get
Dim currentabsolute As String = System.Web.HttpContext.Current.Request.Url.AbsolutePath
Dim currentdomain As String = CurrentDomain
If currentabsolute.Contains("Media") Then
Return System.AppDomain.CurrentDomain.BaseDirectory & "\media\"
ElseIf currentabsolute.Contains("Docs") Then
Return System.AppDomain.CurrentDomain.BaseDirectory & "\docs\"
ElseIf currentabsolute.Contains("Image") Then
Return System.AppDomain.CurrentDomain.BaseDirectory & "\images\"
End If
End Get
End Property
我知道CurrentDomain
不会返回任何内容,System.Web.HttpContext.Current.Request.Url.AbsolutePath
似乎无法返回我想要的内容,因此这些是我希望得到帮助的一部分。
任何帮助都将不胜感激,如果您需要进一步澄清,请询问。
编辑:更新代码
答案 0 :(得分:3)
您正在寻找Request.QueryString
会员。要读取特定查询字符串参数的值,请尝试以下行:
If Request.QueryString("Media") IsNot Nothing Then
Return currentdomain + "/media/"
ElseIf ...
如果查询字符串不包含相关密钥,则访问该索引将不返回任何内容;否则它将返回该参数的值。例如,您可以测试该字符串是否构造为?Media=MyMedia
If Request.QueryString("Media") = "MyMedia"
。
如果您想要原始查询字符串本身,您可以解析问号后面的所有内容的Request.RawUrl
成员,例如:
Dim queryString As String = Request.RawUrl.SubString(Request.RawUrl.IndexOf("?"c) + 1)
答案 1 :(得分:1)
试试这个,让我知道它是如何为你做的:
Imports System.Web
...
Public ReadOnly Property StorageRoot() As String
Get
Dim requestUrl As Uri = HttpContext.Current.Request.Url
Dim newUrl As New UriBuilder(requestUrl.Scheme, requestUrl.Host, requestUrl.Port, HttpContext.Current.Request.ApplicationPath)
Dim currentQuery As String = requestUrl.Query
If String.IsNullOrEmpty(currentQuery)
' What to do if there is no query string?
Else If currentQuery.Contains("Media", StringComparer.InvariantCultureIgnoreCase) Then
newUrl.Path = newUrl.Path + "/media/"
ElseIf currentQuery.Contains("Docs", StringComparer.InvariantCultureIgnoreCase) Then
newUrl.Path = newUrl.Path + "/docs/"
ElseIf currentQuery.Contains("Image", StringComparer.InvariantCultureIgnoreCase) Then
newUrl.Path = newUrl.Path + "/images/"
End If
Return newUrl.ToString()
End Get
End Property