Remove Request QueryString Key Values for Redirection





0/5 (0 vote)
I wanted to make my page behave in two different modes based on the query string. However it was not strait forward. To make it possible I had to manipulate the URL query string to and remove a key and redirecting it back with a freshly creating URL.
Calling Page
bool isKeyFound = false; // Vital to stop calling recursively
string newQueryString = AppHelper.GetNewQueryString (Request.QueryString,"refresh", out isKeyFound);
if (isKeyFound && newQueryString.Length > 0)
{
Response.Redirect(Request.Path + "?" +newQueryString);
}
Called Method
/// <summary>
/// Recreate a new URL by removing
/// </summary>
/// <param name="queryString">Page Requested string </param>
/// <param name="removeKey">The key to be removed</param>
/// <param name="isKeyFound">This will be a additional info returned</param>
/// <returns></returns>
public static string GetNewQueryString(System.Collections.Specialized.NameValueCollection queryString, string removeKey,out bool isKeyFound)
{
string returnVal = string.Empty;
isKeyFound = false ;
//Build the new query string.
for (int j = 0; j < queryString.Count; j++)
{
// Anything except the target key
if (!queryString.GetKey(j).ToLower().Equals(removeKey.ToLower()))
{
returnVal += queryString.GetKey(j) + "=" + queryString.Get(j) + "&";
}
else
{
isKeyFound = true;
}
}
//Remove the trailing '&'
return returnVal.TrimEnd ('&');
}
Happy coding