por Cesar Cassiano Schimanco

Manipular QueryString ASP.NET C#

Para pegar um valor de uma QueryString basta usar o seguinte código.

Request.QueryString["key"]

Porem para alterar, adicionar ou remover valores de uma QueryString é um pouco diferente. Como uma QueryString é somente leitura, não podemos atribuir valores da mesma forma que podemos pegá-los.
Para manipular a QueryString vamos usar a NameValueCollection.
Uma QueryString já é do tipo NameValueCollection, mas como ela é somente leitura, vamos cloná-la para um novo NameValueCollection e depois manipular.

Vamos imaginar uma situação do dia a dia, você tem uma página de busca com vários filtros.
Todos os filtros você passa por parâmetro pela URL, bem como a paginação do resultado.
http://site.com/busca.aspx?nome=teste&estado=5&cidade=205&pagina=1
 

Abaixo um exemplo de como editar os parametros da QuryString

//NameValueCollection que será usada para clonar a QueryString 
NameValueCollection nvcQuerystring = new NameValueCollection();

//Como QueryString é apenas leitura, vou usar o foreach para clonar
foreach (string key in Request.QueryString.Keys)
    nvcQuerystring.Add(key, Request.QueryString[key]);

//Adiciona ou altera o valor
nvcQuerystring.Set("pagina", "2");
//Remover o parametro e o valor da querystring
nvcQuerystring.Remove("pagina");
//Adiciona ou concatena, no caso de já existir valor
nvcQuerystring.Add("pagina", "2");
        
string strNovaQuerystring = string.Empty;
//foreach para montar a nova Querystring
foreach (string key in nvcQuerystring.Keys)
{
    strNovaQuerystring += key + "=" + nvcQuerystring[key] + "&";
}

//Adiciona '?' e remove o último '&'
if(!string.IsNullOrEmpty(strNovaQuerystring))
    strNovaQuerystring = "?" + strNovaQuerystring.TrimEnd('&');

//Fazer o redirect para a nova URL
Response.Redirect(Request.Url.AbsolutePath + strNovaQuerystring);

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...