Existe alguma maneira de modificar seqüências de consulta sem quebrar um postback ASP.Net?

votos
1

Da leitura aqui e em torno da rede, eu estou perto de assumir a resposta é não, mas ...

Vamos dizer que eu tenho uma página ASP.Net que às vezes tem um parâmetro de string de consulta. Se a página tem o parâmetro de string de consulta, eu quero tira-lo antes, durante ou após a postagem. A página já tem um monte de script do lado do cliente (puro JavaScript e jQuery).

Como exemplo, digamos que eu carregar:

http://myPage.aspx?QS=ABC

O parâmetro QS é necessário para controlar o que aparece na página quando se carrega pela primeira vez e é definido pela página que chama-la. myPage.aspxtem elementos de formulário que precisam ser preenchidos e tem um botão de envio que faz um postback. Quando a página completa a postagem, eu preciso URL voltou a ser:

http://myPage.aspx

a fim de evitar o código do lado do cliente que é chamado quando a string de consulta está presente. Em outras palavras, depois de um submeter Eu não quero que as ações do lado do cliente associados com o parâmetro string de consulta ao fogo. Eu sei que eu poderia acrescentar o conteúdo do formulário para o URL como string de consulta parâmetros si e apenas redirecionar para o novo URL e evitar a enviar / postagem, mas isso vai exigir muito mais verificação de tipo no codebehind para evitar dados ruins e falsificação casual. Eu acho que eu também poderia definir um campo oculto no codebehind e olhar para ele junto com a string de consulta para cancelar o comportamento do lado do cliente se eu estou voltando da postagem, mas isso ainda deixa a string de consulta intacta, basicamente, para sempre e quero para se livrar dele após o carregamento da página inicial.

Qualquer idéias ou melhores práticas?

PS - Existe alguma coisa que posso fazer com a propriedade Form.Action que não vai quebrar o comportamento postback?

Publicado 09/12/2008 em 16:44
fonte usuário
Em outras línguas...                            


3 respostas

votos
1

É provavelmente uma prática ruim, mas nesses casos (e que eu só precisa 'reset' da página), eu simplesmente fazer um Response.Redirect para a mesma página.

Respondeu 09/12/2008 em 16:47
fonte usuário

votos
1

iam Não sei se este é o que você está procurando, mas se entendi que você poderia fazer isso:

verificação de carregamento da página -on para o valor QS, se a sua não existe usar um campo de entrada oculto.

página -primeiro cargas de tempo com QS, fazer o seu processamento normal e armazenar valor QS em um campo de entrada oculto.

-Se há QS, em seguida, usar o valor de entrada oculto

postback -após, você pode redirecionar para a mesma página, em que ponto você pode usuário Request.Form [] para recuperar o campo de entrada oculto, ainda carregar os dados corretamente, mas se livrar da QS.

fazia sentido na minha cabeça, eu não tenho certeza que faz sentido agora, mas eu vou deixar você decidir.

Respondeu 09/12/2008 em 17:34
fonte usuário

votos
2

Eu usaria um HTTPModule para interceptar e reescrever a URL e consulta como ele entrou. Eu não estou 100%, mas eu não acredito que isso tenha qualquer impacto com viewstate.

Parece (e parece) complexa, mas na verdade é bastante trivial e aberto a uma tonelada de refinamento e extensão (como por .NET em geral).

Respondeu 09/12/2008 em 17:42
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more