Un caso simpatico:
- Pagina ASP.NET 2.0 con un controllo Validator con proprietà EnableClientScript=True.
- LinkButton con proprietà CausesValidation=True che esegue un'azione, e sul click deve presentare un messaggio di conferma (Vuoi eseguire questa azione? Sì/No).
Se, dopo aver fatto click sul LinkButton, la validazione non va a buon fine, viene mostrato il messaggio di errore del controllo di convalida, ma viene anche mostrato il messaggio di conferma associato al LinkButton.
Per evitare questo, bisogna ricorrere ad un po' di JavaScript e all'attributo OnClientClick del controllo LinkButton. Definiamo una funzione JavaScript del tipo:
function CheckValidator(validator, message)
{
if (document.getElementById(validator).getAttribute("IsValid"))
{
return confirm(message);
}
return false;
}
che serve per leggere il valore dell'attributo IsValid di un controllo validator. L'attributo vale "True" quando la validazione è andata a buon fine. Ora impostiamo la proprietà OnClientClick del LinkButton in questo modo:
lb.OnClientClick = string.Format("CheckValidator('{0}', 'Vuoi eseguire questa azione?');", lb.ClientID);
In questo modo la validazione viene eseguita normalmente, e lo script associato al LinkButton verifica prima se il validator ha dato esito positivo, mostrando il messaggio di conferma solo se opportuno.