PostBack com Isapi Rewrite
Posted by Leonardo Santiago | Filed under ASP.NET, ASP.NET, Desenvolvimento Web
Recentemente utilizei o Isapi Rewrite para criação/ visualização de URL´s amigáveis em sim projeto hospedado na Locaweb,
Porém batemos de frente com o seguite problema: Os PostBacks do asp.net simplesmente não funcionavam!
Ao analizar o problema concluí que isto devia-seao fato que o Isapi Rewrite simplesmente reescreve a url em questão para o endereço amigável,
no meu caso eu programei o “.htaccess” para remover as extensões de todos os arquivos por exemplo: www.site.com/noticias.aspx para www.site.com/noticias
digamos que nesta página haja um filtro por data, região etc. ou um form do tipo “indique para um amigo” ao clicar nada acontecerá, isto porque os forms asp.net inserem
automaticamente o arquivo em questão no “action” quando este não é especificado então quando acessamos www.site.com/noticias, na verdade estamos acessando o arquivo
“noticias.aspx” e o action do form é justamente o arquivo “noticias.aspx” então ao submeter o formulário (enviar o PostBack) o Isapi Rewrite fazia o redirect os os dados do Post eram
perdidos.
Após muito quebrar a cabeça tentando desenvolver a solução consegui com apenas 2 linhas de código
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim originalUrl As String = Request.ServerVariables(“HTTP_X_REWRITE_URL”)
nomeForm.Action = originalUrl
End Sub
Assim o “Action” do form no HTML fica exatamente como é mostrado na URL do navegador e não com o nome correto do arquivo, removendo todos os impedimentos para um
PostBack
Links que me ajudaram a chegar a esta solução:
http://pt.w3support.net/index.php?db=so&id=411167
http://jlcoady.net/aspnet/how-to-url-rewrite-asp-net-2-theme-form-postback