String.Empty无法处理按钮单击

时间:2014-06-27 12:10:35

标签: c# asp.net

我正在尝试使用函数clearForm()清除取消按钮上的表单,该函数将String.Empty与表单的每个字段一起使用,但这不起作用。我既没有得到任何错误也没有得到预期的结果。

这是我的设计代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddEmployee.aspx.cs" Inherits="AddEmployee" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Add Employee</title>
<link href="css/Style.css" type="text/css" rel="Stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
    <ajax:ToolkitScriptManager ID="toolkit1" runat="server"></ajax:ToolkitScriptManager>
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <table align="center" class="loginBox">
            <tr>
                <th colspan="2" style="color:White; font-size:medium; padding-bottom:10px;" align="left">Personal Information</th>
            </tr>
            <tr>
                <td>Name:</td>
                <td><asp:TextBox ID="txtName" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqName" ControlToValidate="txtName" runat="server" Display="None" ErrorMessage="Name" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>Address</td>
                <td><asp:TextBox TextMode="MultiLine" Height="40" Width="135" ID="txtAddress" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqAdd" ControlToValidate="txtAddress" runat="server" Display="None" ErrorMessage="Address" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>DoB:</td>
                <td>
                    <asp:TextBox ID="txtDoB" CssClass="signup_textbox cal_box" runat="server" />
                    <ajax:CalendarExtender ID="CalendarExtender1" TargetControlID="txtDoB" Format="dd/MM/yyyy" runat="server"></ajax:CalendarExtender> 
                </td>
            </tr>
            <tr>
                <td>Gender</td>
                <td>
                    <asp:RadioButtonList CssClass="signup_textbox" ID="GenderList" runat="server" RepeatDirection="Horizontal">
                        <asp:ListItem Selected="True">Male</asp:ListItem>
                        <asp:ListItem>Female</asp:ListItem>
                    </asp:RadioButtonList>
                </td>
            </tr>
            <tr>
                <th colspan="2" style="color:White; font-size:medium; padding-bottom:10px;" align="left">Professional Information</th>
            </tr>
            <tr>
                <td>Department:</td>
                <td>
                    <asp:DropDownList ID="ddlDept" CssClass="signup_textbox" runat="server"></asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td>Designation:</td>
                <td><asp:TextBox ID="txtDesig" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqDesig" ControlToValidate="txtDesig" runat="server" Display="None" ErrorMessage="Designation" ></asp:RequiredFieldValidator>
                </td>

            </tr>
            <tr>    
                <td>Salary:</td>
                <td><asp:TextBox ID="txtSal" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqSal" ControlToValidate="txtSal" runat="server" Display="None" ErrorMessage="Salary" ></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator runat="server" id="rexSal" controltovalidate="txtSal" validationexpression="^[0-9]{5}$" errormessage="Salary must be max 5 digits" Display="None" />
                </td>
            </tr>
            <tr>
                <th colspan="2" style="color:White; font-size:medium; padding-bottom:10px;" align="left">Login Information</th>
            </tr>
            <tr>
                <td>Email:</td>
                <td>
                    <asp:TextBox ID="txtEmail" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqEmail" ControlToValidate="txtEmail" runat="server" Display="None" ErrorMessage="Email" ></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="valEmail" runat="server" ErrorMessage="Invalid Email" ControlToValidate="txtEmail" ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" CssClass="error_msg" Display="none" />
                </td>
            </tr>
            <tr>
                <td>Username:</td>
                <td>
                    <asp:TextBox ID="txtUser" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqUser" ControlToValidate="txtUser" runat="server" Display="None" EnableClientScript="true" SetFocusOnError="true" ErrorMessage="Username" ></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" Display="None" ControlToValidate="txtUser" ValidationExpression="^[\s\S]{3,}$" runat="server" ErrorMessage="Username must have at least 3 characters required."></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><asp:TextBox ID="txtPass" CssClass="signup_textbox" runat="server" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqPass" ControlToValidate="txtPass" runat="server" Display="None" EnableClientScript="true" SetFocusOnError="true" ErrorMessage="Password" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>    
                <td>Confirm Password:</td>
                <td><asp:TextBox ID="txtConfPass" CssClass="signup_textbox" runat="server" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqConfPass" ControlToValidate="txtConfPass" runat="server" Display="None" EnableClientScript="true" SetFocusOnError="true" ErrorMessage="Confirm Password" ></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="cmpPass" runat="server" ControlToCompare="txtPass" ControlToValidate="txtConfPass" ErrorMessage="Password must match" CssClass="error_msg" Display="None"></asp:CompareValidator>
                </td>
            </tr>
            <tr>
                <td align="center" colspan="2" style="padding:5px;"><span><asp:Button ID="btnRegister" Width="60" runat="server" Text="Register" CssClass="btnLogin" OnClick="btn_AddEmp" /></span>
                                   <span><asp:Button ID="btnClr" Width="60" runat="server" Text="Cancel" CssClass="btnLogin" OnClick="btn_ClearForm" /></span>
                </td>
            </tr>
        </table>
            <asp:Panel ID="errorsPanel" runat="server" Style="display: none; border-style: solid; border-width: thin; border-color: #FFDBCA" Width="175px" BackColor="White">
            <asp:ValidationSummary ID="valSummary" runat="server" CssClass="error_msg" HeaderText="You must enter following" DisplayMode="BulletList" EnableClientScript="true" ShowSummary="true" />
         </asp:Panel>
        </ContentTemplate>
        </asp:UpdatePanel>
            </div>
    </form>
</body>
</html>

这是我的代码隐藏:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;

public partial class AddEmployee : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {


    }


    protected void btn_ClearForm(object sender, EventArgs e) //to clear form on IsPostBack or on press of cancel button
    {
        if (!IsPostBack)
        {
            clearForm();
        }
    }

    #region public functions

    public void clearForm()
    {
        txtName.Text = String.Empty;
        txtAddress.Text = String.Empty;
        txtDoB.Text = String.Empty;
        txtDesig.Text = String.Empty;
        txtSal.Text = String.Empty;
        txtEmail.Text = String.Empty;
        txtUser.Text = String.Empty;
        txtPass.Text = String.Empty;
        txtConfPass.Text = String.Empty;
        GenderList.Items[0].Selected = true;
        GenderList.Items[1].Selected = false;
    }

    #endregion

}

2 个答案:

答案 0 :(得分:2)

string.Empty没有错。但是你不需要btn_ClearForm中的条件,因为 btn_ClearForm处理程序将始终调用回发,并且如果!IsPostBack

,则将条件设置为{/ 1}}
// if (!IsPostBack) 
//{
    clearForm();
// }

您的代码将是

protected void btn_ClearForm(object sender, EventArgs e) 
{       
        clearForm();       
}

答案 1 :(得分:0)

得到了修复!

只需在取消按钮上使用 CausesValidation =&#34; false&#34; ,以便在取消按钮点击事件时禁用验证。

因为当您在控件上使用验证而未在取消按钮上使用 CausesValidation =&#34; false&#34; 时,您的控件将被强制通过为其提供的验证条件和因为取消按钮用于清除表单,无论在表单字段中检查数据的有效性,表单都会被卡住。

因此,只要您在控件上使用了验证条件,只需确保在单击取消/清除/重置按钮时不会触发它们。

由于