Visto che è un pò complicato, ti posto qualche riga di codice:
Variabile globale che indica se siamo in IE oppure no:
Metodo OnInit della pagina ASP.NET:codice:private bool _ie = false;
Metodo Page_Load della pagina in cui setto le proprietà dei validatori in base al tipo di browser (per FireFox devo disabilitare EnableClientScript):codice:override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the Web Form Designer. // InitializeComponent(); base.OnInit(e); Page.ClientTarget=""; HttpBrowserCapabilities bc = Page.Request.Browser; if (bc.Browser.ToUpper().IndexOf("IE")>=0) _ie=true; else { _ie=false; if (bc.MajorVersion>=5) Page.ClientTarget="uplevel"; } }
codice:private void Page_Load(object sender, System.EventArgs e) { if (!Page.IsPostBack) { if (!this._ie) { RequiredFieldValidator_ApplicationID.EnableClientScript=false; RegularExpressionValidator_ApplicationID.EnableClientScript=false; ValidationSummary_Page.EnableClientScript=false; } } }
Click su un pulsante che deve fare qualche operazione...
(Controllo Page.IsValid solo per browser non IE, perchè in tal caso la validazione è già stata fatta lato-client)
codice:private void Button_ApplicationAction_Click(object sender, System.EventArgs e) { if (!Page.IsValid) { if (!this._ie) { string sMessage=""; for (int j=0;j<Page.Validators.Count;j++) { if (Page.Validators[j].IsValid==false) sMessage+=Page.Validators[j].ErrorMessage+"\\r\\n"; } CreateStartUpErrorScript(sMessage); } } else { //fai quello che devi fare... } }
Per creare MessageBox lato-client:
codice:private void CreateStartUpErrorScript(string ErrorMessage) { string script = @" <script language=""javascript""> alert(""" + ErrorMessage + @"""); </script>"; if (!Page.IsStartupScriptRegistered("CheckError")) Page.RegisterStartupScript("CheckError",script); }

Rispondi quotando
A me, con Firefox non funziona. O meglio, non fa quello che vorrei. Mi spiego, non funziona la validità lato client. La pagina viene sempre spedita al server. Vi sono errori di javascript rilevata dal browser. Insomma, è proprio la libreria microsoft javascript per la validazione che è volutamente sbagliata
. Secondo me è un punto di vista sbagliato. Mi spiego. Il file C:\Inetpub\wwwroot\aspnet_client\system_web\1_1_43 22\WebUIValidation.js della Microsoft è sbagliato. Contiene errori e non funziona bene neanche con IE. Io ho trovato solo un errore, ma tu capisci che è strano che in tanti anni non sia stato corretto. Questo file js è sbagliato poi perchè fa uso di istruzioni proprietarie in modo superfluo, inutile e non rispettoso verso gli utenti. Io non sono esperto in javascript però mi sento di dire che con un piccolo sforzo si potrebbero cambiare queste istruzioni proprietarie con istruzioni standard funzionanti benissimo anche con IE.