簡體   English   中英

為什么我的asp.net網絡表單頁面驗證在IE9中失敗,但在Chrome(當前版本)中卻沒有

[英]Why does my asp.net webform page validation fail in IE9, but not Chrome(current version)

這似乎是一個簡單的問題,但是我用谷歌搜索了一下,找不到任何線索。

這是一個基本頁面(出於演示目的而進行了實質性的刪減)

<%@ 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>

如果內容不重要,請告訴我,為了讀者的緣故,我也可以刪除該內容。

在正文的主要部分中,我有三個內容占位符

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

如果這很重要,我會在大多數頁面上使用cphBody,而其他頁面則是出於遺留原因。

在IE9中無法運行(但在Chrome中可以正常運行)的示例頁面如下所示:

<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>

此示例頁面的代碼執行此操作:

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

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

這是發生所有問題的行:

if (!this.IsValid) return;

在Chrome瀏覽器中,該語句不會返回,所有內容均有效,確實是事實。

在IE9中,這行命中了return語句,我為此感到悲傷和困惑。

那么您認為這里發生了什么? 我在哪里可以看(我嘗試過提琴手,在IE dev工具中調試js,這令人困惑,我將它們在“殘破的頁面”中的代碼與在IE9中實際可用的少數代碼進行了比較,沒有真正的區別) ? 我很想得到這樣的答案:“哦,添加此內容,一切都會很好!”,但我看不到這種情況。 所以我問哪里可以找到解決方案,我完全迷失了。

要在應得的信用額中給予信用,請參閱問題注釋。 我們從那里得到了答案,所以我將其張貼在這里。

在頁面上拋出了一些JavaScript錯誤(在我們被拉入的無關庫中)。 Chrome顯然對此沒有問題,但IE確實有問題。 我更正了js錯誤,頁面再次正常運行。 woo!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM