• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

diogo.delgaudio

método para criar alert

5 mensagens neste tópico

Bom dia, galera... criei uma classe para operações  que são corriqueiramente chamados por componentes, um dos métodos e para chamar um alert, se utilizando da classe httpContext para escrever na página atual d dentro de uma classe, para ser mais claro este é o método:

public void ShowAlert(string Msg) 
    {
        HttpContext.Current.Response.Write(@"<script language = ""javascript"">alert("+Msg+");</script>");
    }

não sei pq, mas não funciona quando o chamo pelo code-behind. alguém tem uma sugestão? :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não funciona porquê? Dá erro? Convém especificares o máximo que puderes do problema...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpe, não funciona. nada acontece... n dah nem erro =/

Olá Diogo,

Existe um pequeno erro no seu script, e por isso não está a funcionar... O seu navegador provavelmente está escondendo o erro de JavaScript (observe no canto inferior esquerdo se não há um ícone que indica erro de script).

A mensagem que você passa como parâmetro para a função alert, é uma string, e portanto precisa estar dentro de aspas ou plicas... Assim, seu script deveria ficar assim:

public void ShowAlert(string Msg)
{
    HttpContext.Current.Response.Write(@"<script language=""javascript"">alert('" + Msg + "');</script>");
}

Por fim, vale dizer que utilizar o Response.Write para injectar scripts diretamente na página não é lá a melhor forma de se fazer. Isso porque faz com que os scripts sejam a primeira coisa a ser enviada para o browser, antes mesmo de começar as tags html, head, body, etc... Assim, o ideal seria obter uma referência para a página através do HttpContext, e então utilizar o método ClientScript.RegisterStartupScript para injectar o script diretamente no final da página, antes do fechamento da tag "body". Veja um exemplo um pouco mais elaborado:

public void ShowAlert2(string mensagem)
{
    // Corrige possíveis "plicas" que possam existir na mensagem
    mensagem = mensagem.Replace("'", "\'");

    // Monta o script com o "Alert" para mostrar a mensagem
    string script = String.Format("alert('{0}');", mensagem);

    // Obtém a referência para a página que está sendo executada
    Page pagina = HttpContext.Current.CurrentHandler as Page;

    // Verifica se conseguiu obter uma referência para a página,
    if (pagina != null)
    {
        // Envia o script para a página
        pagina.ClientScript.RegisterStartupScript(this.GetType(), 
            mensagem.GetHashCode().ToString(), script, true);
    }
}

Abraços,

Caio Proiete

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

caio, obrigado! o seu exemplo é mto bom. sobre as aspas, elas estvam lá a mensagem não estava aparecendo pq eu estava dando um response.redirect (pra msma pagina) logo depois d mandar a o response.write e como a aplicação web funciona por requisições, o redirect era feito -antes- e o response.write era ignorado... descobri isso hje xD, estou acostumado a programar pra desktop então n tinha me tocado nisso antes. a forma q eu achei pra exibir o alerta, foi criar uma variável de sessão alert pra apresentar, no load ou em outra página, se houve msg de erro ou de sucesso. n sei se me fiz entender, mas obrigado pela resposta, foi de grande valia!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora