Não é possível obter sem javascript para executar em um controle de usuário ASP.NET
-
22-08-2019 - |
Pergunta
Eu estou tentando fazer a coisa mais simples, para mostrar um pop-up de alerta através de javascript do meu código-behind de um controle de usuário (ascx.cs).
Eu tentei
protected void btnSave_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(btnSave, GetType(), "uniqueID", "alert('hello');", true);
}
bem como
Page.ClientScript.RegisterStartupScript(GetType(), "uniqueID", "alert('hello');", true);
mas nada parece funcionar para mim. O controle está localizado dentro de uma RadAjaxPanel (telerik) em uma página ASPX.
Eu estou faltando algo óbvio aqui. Todas as idéias que?
EDIT: O javascript não é injetado em HTML, tanto quanto eu posso ver. Eu olho para o ID ea declaração de alerta real no html.
Solução 2
Ah, o problema foi o Telerik RadAjaxPanel. Eu só tinha que definir as EnableOutsideScripts a verdade sobre eles, assim:
<telerik:RadAjaxPanel ID="ajaxpanel" runat="server" LoadingPanelID="ajaxLoadingPanel" EnableOutsideScripts="true">
E então eu poderia usar o seguinte código:
ScriptManager.RegisterStartupScript(btnSave, GetType(), "uniqueID", "alert('hello');", true);
Outras dicas
tipo de passagem de página para tipo de script de cliente parâmetro:
Page.ClientScript.RegisterClientScriptBlock(typeof(MyPage),
"myPostBackScript", script, true);
EDIT: Normalmente este código funciona, mas eu não sei como efeitos de controle de Telerik o script injetado. Eu acho que você deve abrir o código HTML da página e tentar encontrar script injetado. Isso vai nos ajudar a resolver o seu problema.
Você tem <form runat="server"
em sua página?
você chama se de onClienClick evento do botão? o que quer controlar você está usando, certifique-se que você está chamando os js de um evento do lado do cliente
Além disso, dê uma olhada este de ideias
Editar
Você não pode chamar js do servidor, js é um script do lado do cliente. o que você pode fazer é registrar seu script depois de fazer toda a verificação, e amarrá-lo para onLoad evento. ver este SO questão para detalhes