私はウェブプログラミングが初めてです。連絡先情報を受け入れる非常に標準的なページがあり、それに検証コントロールを追加しようとしています。ユーザーがキャンセル ボタンをクリックしても何も保存されないため、ページをアンロードして前のページに戻りたいだけです。私の問題は、キャンセル ボタンでもCausesValidation="false
検証イベントがまだ発生しており、ポスト バックが発生しないことです。Visual Studio 2012 と C# を使用しています。問題を示すために、作業中のコードを必要最小限のコードに減らすテスト ページを作成しました。Page_Validation = false; の両方で javascript disableValidation() 関数を試しました。そして、成功せずに個々の検証コントロールを無効にするループ。Page_Validation をチェックすると false になり、ループは例外Page_Validators is undefinedをスローします.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestMe.aspx.cs" Inherits="ElmoWeb.TestMe" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Simple Little Test Form</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="uxEmail" runat="server" placeHolder="email address" type="email" AutoCompleteType="Email"></asp:TextBox>
<asp:RegularExpressionValidator ID="uxEmailValidator" runat="server"
ControlToValidate="uxEmail"
ValidationExpression="^[a-zA-Z][\w\._%+-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"
ErrorMessage="The email address is invalid"
EnableClientScript="false" ValidationGroup="testing"
Display="Static"/>
</div>
<div>
<asp:Button ID="Submit" runat="server" Text="Submit" CausesValidation="true" UseSubmitBehavior="true" ValidationGroup="testing" />
<asp:Button ID="Cancel" runat="server" Text="Cancel" CausesValidation="false" UseSubmitBehavior="true" ValidationGroup="FakeValidationGroup" />
</div>
<div>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode="List" HeaderText="You must correct the following errors." ValidationGroup="testing" />
</div>
</form>
</body>
</html>
現在、コード ビハインドは出力ウィンドウにメッセージを書き込むだけなので、ポスト バックが発生したかどうかを確認できます。
protected void Page_Load(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("TextMe.aspx Page_Load event, sender = " + sender.ToString() + ", EventArgs = " + e.ToString());
}