我无法取消ASP.NET页面

时间:2013-09-25 17:39:13

标签: c# asp.net validation

我是网络编程的新手。我有一个非常标准的页面,接受联系信息,我正在尝试添加验证控件。当用户单击取消按钮时,没有保存任何内容,因此我只想卸载页面并返回上一页。我的问题是,即使取消按钮有CausesValidation="false,验证事件仍然在触发,并且不会发生回发。我正在使用Visual Studio 2012和C#。我已经创建了一个测试页面,以便将我正在使用的代码减少到演示问题所需的最低代码。我已尝试使用Page_Validation = false的javascript disableValidation()函数;和循环禁用单个验证控件但没有成功。当我检查Page_Validation时它是false,并且循环抛出异常 Page_Validators未定义

<%@ 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());
}

1 个答案:

答案 0 :(得分:1)

解决两个或多个提交按钮应以不同方式运行的问题的自然方法是使用验证组。

在提交按钮和一组验证器上使用ValidationGroup属性设置验证组。单击按钮时,相同的值会绑定按钮和验证器,并且仅绑定具有相同属性值的验证器。

在您的情况下,在接受按钮上设置ValidationGroup并将验证器设置为“接受”并在取消按钮上保留默认(空)值将解决您的问题。这比您尝试的任何变通方法都简单得多。