I wrote this function when I kept having to change values of the QueryString and remove some, add some, etc., etc..
It takes four (4) parameters:
oldUrl = the current QueryString you would like manipulated
qsName = the name of the QueryField you would like to modify/remove/add
newValue = the new value you would like for the QueryField. set to "" if removing
del = an optional integer bit flag; if set to 1 it will remove the QueryField/QueryFieldValue from the QueryString.
Here is the code, enjoy! (I am always welcome to new suggestions)
Expand|Select|Wrap|Line Numbers
- Function ChangeValue(ByVal oldUrl As String, ByVal qsName As String, ByVal newValue As String, Optional ByVal del As Integer = 0) As String
- Dim newUrl As String = ""
- ' Check if the [qsName] is currently in the [oldUrl]
- If InStr(oldUrl, qsName & "=")
- oldUrl += "&"
- Dim pos1 As Integer, pos2 As Integer
- If del = 1
- pos1 = oldUrl.IndexOf(qsName & "=")
- pos2 = oldUrl.IndexOf("&", pos1) + 1
- Else
- pos1 = oldUrl.IndexOf(qsName & "=") + qsName.Length + 1
- pos2 = oldUrl.IndexOf("&", pos1)
- End If
- Dim chunk_1 As String = oldUrl.SubString(0, pos1)
- Dim chunk_2 As String = oldUrl.SubString(pos2)
- If del = 1
- newUrl = chunk_1 & chunk_2
- Else
- newUrl = chunk_1 & newValue & chunk_2
- End If
- newUrl = newUrl.SubString(0, (newUrl.Length - 1))
- Else
- If del = 1
- Return oldUrl
- End If
- ' Append the new value to the [oldUrl] and make it a [newUrl]
- If oldUrl.EndsWith("?")
- newUrl = oldUrl & qsName & "=" & newValue
- ElseIf InStr(oldUrl, "?") AndAlso oldUrl.EndsWith("?") = False
- If oldUrl.EndsWith("&")
- newUrl = oldUrl & qsName & "=" & newValue
- Else
- newUrl = oldUrl & "&" & qsName & "=" & newValue
- End If
- Else
- newUrl = oldUrl & "?" & qsName & "=" & newValue
- End If
- End If
- Return newUrl
- End Function
We have the querystring
Expand|Select|Wrap|Line Numbers
- http://www.yourdomain.com/search.aspx?fulltext=cat&author=bill+nye&type=scientist&age=45
Also, I want to remove "type" from the QueryString.
Expand|Select|Wrap|Line Numbers
- Dim newUrl = Request.RawUrl.ToString()
- newUrl = ChangeValue(newUrl, "fulltext", "dog")
- newUrl = ChangeValue(newUrl, "author", "bob dole")
- newUrl = ChangeValue(newUrl, "type", "", 1)
Expand|Select|Wrap|Line Numbers
- http://www.yourdomain.com/search.aspx?fulltext=dog&author=bob+dole&age=45