none
Problemas ao injetar javascript com script manager RRS feed

  • Pergunta

  • Galera,

    Estou tendo problemas ao injetar código javascript na página. O problema acontece no método RegisterStartupScript do script Manager (Ver método GenerateAlertAjax).
    Tenho uma masterPage e dentro desta masterPage tenho um script Manager. Todas as páginas tem esta masterPage. Estou capturando os erros gerados e quero gravá-los na página com o scriptManager. As validações de negocio geram excecoes do tipo ApplicationException. Quando cadastro um cliente, por exemplo, cujo cpj já existe, o método de negocio gera uma exceção com a mensagem: Este cpf já esta cadastrado. Quero capturar esta mensagem de erro tratada no evento <b>ErrorHandling</b> o problema é que o erro não é escrito na página. A linha  ScriptManager.RegisterStartupScript(page, page.GetType(), "Alert", message, true); é executada mas nada acontece. Preciso exibir alerts com as mensagens de erro geradas pelo sistema. Está acontecendo o seguinte: - Cadastro um cliente, em uma tela assincrona, e durante o processamento assíncrono, uma exceção tratada é gerada e não consigo "injetar" código javascript no script Manager. Pesquisei algumas outras alternativas e nada. Não consigo injetar código javascript para exibir os alerts com as mensagens de erro (exceções geradas)

    Estou tratando as mensagens de erro no evento ErrorHandling da página.

     private void ErrorHandling(object sender, EventArgs e)
            {

                Exception erro = Server.GetLastError();

                Server.ClearError();
                Context.ClearError();
                Response.Clear();

                // Se a exceção é conhecida, exibe a mensagem de erro Tratada.
                if (erro is ApplicationException)
                   MessagePage.GenerateAlert(erro.Message.ToString().Replace("'", ""));
                // Se a exceção não é conhecida(ou seja, se não é tratada), exibe a mensagem genérica abaixo
                else
                    MessagePage.GenerateAlert("Ocorreu um Erro no Sistema, Contacte o Administrador !".Replace("'", ""));
            }

     

      public static void GenerateAlert(string message)
            {
                Page page = (Page)HttpContext.Current.Handler;
                ScriptManager sm = ScriptManager.GetCurrent(page);

                if (sm != null && sm.IsInAsyncPostBack)
                    GenerateAlertAjax(page, message);
                else
                    GenerateAlertScript(page, message);
            }

     

       private static void GenerateAlertAjax(Page page, string message)
            {
                message = "alert('" + message + "');";
               ScriptManager.RegisterStartupScript(page, page.GetType(), "Alert", message, true);

    }

     

    Agradeço a ajuda.

    Abs,

    Rafael Nardo.

    • Movido AndreAlvesLima terça-feira, 9 de novembro de 2010 00:15 (De:.NET Development - Geral)
    segunda-feira, 8 de novembro de 2010 19:59

Todas as Respostas