C# 我无法取消ASP.NET页面

C# 我无法取消ASP.NET页面,c#,asp.net,validation,C#,Asp.net,Validation,我是网络编程新手。我有一个非常标准的页面,可以接受联系人信息,我正在尝试向其中添加验证控件。当用户单击“取消”按钮时,不会保存任何内容,因此我只想卸载页面并返回上一页。我的问题是,即使是取消按钮也会导致验证=“false验证事件仍在触发,并且不会发生回发。我正在使用Visual Studio 2012和C#。我创建了一个测试页面,将我正在使用的代码减少到演示问题所需的最低代码。我已经尝试了javascript disableValidation()函数,其中Page_Validation=fal

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

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

验证组在提交按钮和一组验证程序上都设置了ValidationGroup属性。相同的值绑定按钮和验证器,只有属性值相同的验证器在单击按钮时才会激发


在您的情况下,将accept按钮上的ValidationGroup和验证器设置为“accept”,并在cancel按钮上保留默认(空)值将解决您的问题。这比您尝试的任何解决方法都要简单。

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

验证组在提交按钮和一组验证程序上都设置了ValidationGroup属性。相同的值绑定按钮和验证器,只有属性值相同的验证器在单击按钮时才会激发



在您的情况下,将accept按钮上的ValidationGroup和验证器设置为“accept”,并在cancel按钮上保留默认(空)值将解决您的问题。这比您尝试的任何解决方法都要简单。

您可以向我们展示您的隐藏代码吗?请尝试删除“取消”按钮上的UseSubmitBehavior=“true”或将其设为false。您还可以重定向客户端上的页面单击取消按钮的事件。设置
UseSubmitBehavior=“false”
有效。我想我必须要有它才能把帖子拿回来,这样我就可以重新检查记录并取消更新。很高兴它能帮上忙!作为补充说明,UseSubmitBehavior默认为true,因此不必显式指定它。我会尝试从两个按钮中删除UseSubmitBehavior,看看它是否有效。您可以向我们显示您的代码吗?请尝试删除“取消”按钮上的UseSubmitBehavior=“true”或将其设为false。您还可以重定向客户端上的页面单击取消按钮的事件。设置
UseSubmitBehavior=“false”
有效。我想我必须要有它才能把帖子拿回来,这样我就可以重新检查记录并取消更新。很高兴它能帮上忙!作为补充说明,UseSubmitBehavior默认为true,因此不必显式指定它。我会尝试从两个按钮中删除UseSubmitBehavior,看看它是否有效。我在上面的示例中尝试了在RegularExpressionValidator和asp“Submit”按钮中设置ValidationGroup以进行“测试”,并从“Cancel”按钮中删除UseSubmitBehavior属性。验证控件显示了错误消息,但未触发代码隐藏页面加载事件。请尝试在ValidationSummary上指定相同的validationGroup。另外,为了确保,将Cancel按钮上的ValidationGroup设置为另一个非空字符串。这才起作用。对不起,我得到了同样的结果。我已使用您的解决方案更新了我的代码示例,以便您可以查看我是否仍然有错误,但到目前为止,设置UseSubmitBehavior=“false”是唯一有效的方法。这是因为您的输入具有“type=email”。浏览器不允许它提交到服务器。请删除该属性或接受它已在客户端验证的事实。我在上面的示例中尝试了这一点:在RegularExpressionValidator和asp“Submit”按钮中将ValidationGroup设置为“testing”,并从“Cancel”按钮中删除UseSubmitBehavior属性。验证控件显示了错误消息,但未触发代码隐藏页面加载事件。请尝试在ValidationSummary上指定相同的validationGroup。另外,为了确保,将Cancel按钮上的ValidationGroup设置为另一个非空字符串。这才起作用。对不起,我得到了同样的结果。我已使用您的解决方案更新了我的代码示例,以便您可以查看我是否仍然有错误,但到目前为止,设置UseSubmitBehavior=“false”是唯一有效的方法。这是因为您的输入具有“type=email”。浏览器不允许它提交到服务器。请删除该属性或接受它已在客户端验证的事实。
protected void Page_Load(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("TextMe.aspx Page_Load event, sender = " + sender.ToString() + ", EventArgs = " + e.ToString());
}