Archive for janeiro \30\UTC 2011

ASP.NET Menu no Safari

janeiro 30, 2011

Há alguns dias precisava que uma aplicação ASP.NET funcionasse no Safari (IPad) mas me deparei com um problema, o menu não funcionava.
Procurando pela internet encontrei uma discussão que mostrava o seguinte código:

if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) != -1)
{
    ClientTarget = "uplevel";
}

Com o código acima verificamos se o browser é o Safari, depois atribuimos à propriedade ClientTarget o valor “uplevel” (especifica compatibilidades equivalentes ao Internet Explorer 6.0).

A propriedade ClientTarget nos permite sobrescrever a detecção automática das compatibilidades do browser e especificar como a página deve ser renderizada.

O código deve ser colocado no método OnPreInit da página. Como a MasterPage não possui esse método é necessário que seja colocado em todas as páginas que possuem o menu.
Para facilitar podemos criar uma classe herdando da classe Page e sobrescrever o método OnPreInit:

public class PaginaPadrao : Page
{
    protected override void OnPreInit(EventArgs e)
    {
        if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) != -1)
        {
            ClientTarget = "uplevel";
        }
        base.OnPreInit(e);
    }
}

Agora nossas páginas deverão herdar da classe PaginaPadrao:

public partial class Default : PaginaPadrao
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

Feito isso toda página quando aberta executará o método OnPreInit da classe PaginaPadrao fazendo com que o menu funcione sem problemas no Safari.

Anúncios

Artigos no MSDN

janeiro 29, 2011

Tive a honra de escrever seis artigos para o MSDN (Microsoft Developer Network), são eles:

Agradeço ao João Paulo Clementi pela oportunidade e à todos que me apoiaram.