Executar javascript após um Postback parcial

Parece que cada vez tenho menos tempo para poder tratar do meu blog.
Isto de programar em asp é um atraso de vida, quando volto ao ASP .NET vejo-me à nora para fazer coisas fáceis. Hoje precisei de mostrar uma simples mensagem de alerta a dizer ao utilizador que o login é inválido. E com um pouco de pesquisa descobri que tenho que usar a framework de ajax no lado do cliente para executar comandos após um postback, o que é um bocado chato, mas infelizmente tem lógica pois não é possível inserir javascript no documento depois da página ter sido carregada (o que é pena).

Assim sendo é preciso usar o Sys.WebForms.PageRequestManager.getInstance().add_endRequest(funcaoDeJavascript); para ligar uma funcao ao evento de inicio (e ou fim) de um postback parcial. Mas como eu quero que a funcao so execute em caso de login inválido, criei um hidden input ao qual verifico se o valor não é nulo(ou vazio neste caso):

function showError(sender, args)
{var errorMsg = WebForm_GetElementById("<%=hiddenInputControl.ClientId%>").value;
if(errorMsg != ''){alert(errorMsg);}}

Ou seja sempre que quiser que esta função dê um alerta basta-me atribuir um valor ao controlo hiddenInputControl ao processar o postback parcial.

Podem ainda ver que usei a função WebForm_GetElementById() que é disponibilizada pela framework, descobri esta função através do inspector de dom do firebug, penso que deve ser uma forma mais correcta de referenciar um controlo a partir do lado do cliente, no entanto não sei bem a vantagem. Qualquer esclarecimento é bem vindo.

Apesar de isto ser um blog aproveito também para deixar no ar uma pergunta... Alguem sabe como visualizar os valores de uma lista devolvida por um método interno durante um debug? É que se eu criar algum tipo de lista (seja ele array, list, listof(T) ) e adicionar os itens manualmente, tenho acesso aos vários indices da lista. No entanto se for um método interno da framework (por exemplo xmlnode.childnodes) diz "in order to evalute an indexed property, the property must be qualified".

Filed under:

Leave a Comment

(requerido) 
(requerido) 
(opcional)
(requerido) 
If you can't read this number refresh your screen
Enter the numbers above: