2013-06-05 2 views
1

Cela peut sembler une question simple, mais j'ai trouvé la foutaise et je ne trouve aucun indice.Pourquoi la validation de ma page web asp.net échoue-t-elle dans IE9, mais pas Chrome (version actuelle)

Voici une page de base (dégrossi essentiellement à des fins de démonstration)

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="NUBrand.master.cs" Inherits="nuservices_NUBrand" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta charset="UTF-8" /> 
<meta http-equiv="imagetoolbar" content="no" /> 
<meta name="language" content="en" /> 
<script type="text/javascript"> 
    var isiPad = navigator.userAgent.match(/iPad/i) != null; 
    var ua = navigator.userAgent; 
    var isiPad = /iPad/i.test(ua); 
    if (isiPad == false) { // viewport tag breaks ipad portrait... don't use it if it's an ipad 
     document.write('<meta name="viewport" content="width=device-width,initial-scale=1.0">'); 
    } 
</script> 
<%--<!--[if gte IE 9]><!--> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="javascript/jquery-2.0.0.min.js"><\/script>')</script> 
<!--<![endif]-->--%> 

<%--js--%> 
<script src="resources/js/jquery.stayInWebApp.js"></script> 
<script src="resources/js/global.js"></script> 

<%--css--%><link href="resources/css/bootstrap-custom.css" rel="stylesheet" /> 
<link href="resources/css/bootstrap-custom.css" rel="stylesheet" /> 
<link href="resources/forms.css" rel="stylesheet" /> 
<link href="resources/css/normalize.css" rel="stylesheet" /> 
<link href="resources/css/global.css" rel="stylesheet" /> 
<link media="all and (max-width: 768px)" rel="stylesheet" type="text/css" href="resources/css/mobile.css" /> 

<script src="resources/js/modernizr.js"></script> 
<asp:ContentPlaceHolder ID="cphHead" runat="server" /> 
</head> 
<body> 
<div id="container"> 
    <header id="mainHead"> 
    </header> 
    <div id="pageHeader"> 
     <div id="breadcrumb"> 
      <asp:ContentPlaceHolder ID="cphHeaderLinks" runat="server" /> 
     </div> 
     <div class="container-fluid"> 
      <form id="Form1" runat="server" name="form1"> 
       <asp:ContentPlaceHolder ID="cphBodyWithForm" runat="server" /> 
       <asp:ContentPlaceHolder ID="cphBody" runat="server" /> 
       <asp:ContentPlaceHolder ID="cphInputForm" runat="server" /> 
      </form> 
      <div id="pageChildren"> 
      </div> 
     </div> 
    </div> 

    <footer id="mainFooter"> 
    </footer> 
</div> 
<asp:ContentPlaceHolder ID="cphPageScripts" runat="server" /> 
</body> 
</html> 

Si le contenu est pas important, laissez-moi savoir et je peux enlever ça aussi pour le plaisir des lecteurs.

Dans la partie principale du corps, j'ai trois espaces réservés contenu

<asp:ContentPlaceHolder ID="cphBodyWithForm" runat="server" /> 
<asp:ContentPlaceHolder ID="cphBody" runat="server" /> 
<asp:ContentPlaceHolder ID="cphInputForm" runat="server" /> 

J'utilise cphBody pour la plupart de mes pages si cette matière, les autres sont là pour des raisons historiques.

Une page d'exemple qui ne fonctionne pas dans IE9 (mais fonctionne très bien dans Chrome) ressemble à ceci:

<asp:Content ContentPlaceHolderID="cphBody" runat="Server"> 
    <div class="row-fluid span12"> 
     <div class="span7"> 
      <%--validation summary--%> 
      <div class="row-fluid"> 
       <div class="span12"> 
        <asp:ValidationSummary ID="ValidationSummary2" runat="server" HeaderText="You must provide:" 
         ForeColor="#BF2E1A" /> 
       </div> 
      </div> 
      <%--career week date--%> 
      <div class="row-fluid"> 
       <div class="span6"> 
        <span>Career Week Date:<%= UtilsWww.RequiredAsterisk %></span> 
       </div> 
       <div class="span6"> 
        <asp:DropDownList runat="server" ID="inDate"> 
         <asp:ListItem Text="" /> 
         <asp:ListItem Text="February" /> 
         <asp:ListItem Text="May" /> 
         <asp:ListItem Text="August" /> 
         <asp:ListItem Text="November" /> 
        </asp:DropDownList> 
        <asp:RequiredFieldValidator runat="server" ErrorMessage="Career Week date" ID="RequiredFieldValidator4" 
         ControlToValidate="inDate" Display="Dynamic" Text="X" EnableClientScript="True" /> 
       </div> 
      </div> 
      <%--Contact Email--%> 
      <div class="row-fluid"> 
       <div class="span6"> 
        <span>Contact's email:<%= UtilsWww.RequiredAsterisk %></span> 
       </div> 
       <div class="span6"> 
        <asp:TextBox runat="server" ID="txtContactPersonEmail"></asp:TextBox> 
        <asp:RequiredFieldValidator runat="server" ErrorMessage="Contact Person's Email" 
         ID="RequiredFieldValidator3" Display="Dynamic" ControlToValidate="txtContactPersonEmail" 
         ToolTip="A contact person email must be provided!">X</asp:RequiredFieldValidator> 
        <asp:RegularExpressionValidator runat="server" ErrorMessage="Valid Email Address" 
         ID="RegularExpressionValidator1" Display="Dynamic" ControlToValidate="txtContactPersonEmail" 
         ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ToolTip="Email addresses must conform to internet email standards!">X</asp:RegularExpressionValidator> 
       </div> 
      </div> 
      <div class="row-fluid"> 
       <asp:LinkButton ID="Linkbutton1" runat="server" CssClass="formSubmitButton" OnClick="Linkbutton1_Click"> 
         Submit<img src="resources/images/icn_getstarted.png" alt="submit" class="btn-arrow"/> 
       </asp:LinkButton> 
      </div> 
     </div> 
     </div> 
     <div class="span5"> 
    </div> 
</asp:Content> 

Le codebehind pour cette page par exemple ce que cela:

protected void Linkbutton1_Click(object sender, EventArgs e) 
{ 
    this.Validate(); 

    if (!this.IsValid) return; 
    ...Do some other Stuff... 
} 

Cette est la ligne où tous mes problèmes se produisent:

if (!this.IsValid) return; 

Dans Chrome, cette déclaration ne revient pas, tout est valide, c'est fait.

Dans IE9, cette ligne frappe l'instruction de retour et je suis triste et confus.

Alors, que pensez-vous qu'il se passe ici? Où puis-je regarder (j'ai essayé fiddler, suivre les outils de développement IE pour déboguer les js, il devient confus, j'ai comparé le code dans les «pages brisées» à ceux qui fonctionnent réellement dans IE9, pas de réelle différence) ? J'aimerais avoir une réponse comme "Oh, ajoutez ceci et tout ira bien!", Mais je ne vois pas cela arriver. Donc, je demande où chercher des solutions à cela, je suis complètement perdu.

+0

Avez-vous essayé de regarder la console de développement pour voir s'il y a des erreurs javascript lancées? – emd

+0

Est-ce que vous faites quelque chose dans les champs de formulaire dans 'Page Load' (par exemple réinitialisation/valeurs par défaut)? – EdSF

+0

@emd sont deux erreurs js venant de certaines bibliothèques non apparentées. Pensez-vous que cela pourrait jouer un rôle? – ledgeJumper

Répondre

0

Pour donner un crédit lorsque le crédit est dû, voir les commentaires sur la question. Nous sommes arrivés à la réponse à partir de là, donc je vais l'afficher ici.

Deux erreurs javascript ont été lancées sur la page (dans des bibliothèques non liées dans lesquelles nous sommes attirés). Chrome n'avait évidemment pas de problème avec ça, mais IE l'a fait. Je corrige l'erreur js et les pages ont bien fonctionné à nouveau. woot!

Questions connexes