Arquivo de 27 de Janeiro de 2007

Problemas com SiteMapPath e Server.Transfer()

Salve desenvolvedores,

Um modo fácil hoje de ir para outra página levando parametros é o Server.Transfer(), que armazena valores no Contexto (Context.Items) e recupera os itens ou controles na página seguinte. Porém, o endereço do browser não é atualizado, como no Response.Redirect, que força uma nova requisição ao servidor.

Com isso, temos problemas em apresentar o nó real no controle SiteMapPath, afinal, a URL não é atualizada. Podemos resolver esse problema com o seguinte código:

protected void Page_Load(object sender, EventArgs e)
{
// Registramos o evento Resolve de SiteMapPath
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.OnSiteMapResolve);
}

private SiteMapNode OnSiteMapResolve(object sender, SiteMapResolveEventArgs args)
{
SiteMapProvider provider = sender as SiteMapProvider; // Recuperamos o SiteMapPath
return provider.FindSiteMapNode(HttpContext.Current.Request.CurrentExecutionFilePath); // Procuramos o nó de acordo com o arquivo atual
}

Nesse caso, o ideal seria usar uma MasterPage.

abraços,

Comentários (2)