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