如果我在按钮的 Click 属性 ASP.NET 中放置代码,则 RequiredFieldValidator 不起作用
本文关键字:代码 不起作用 RequiredFieldValidator NET 按钮 Click ASP 属性 如果 | 更新日期: 2023-09-27 18:33:48
Q:当我将btnSubmitCheckup_Click属性设为空时,所有必需字段验证器都在工作。但是如果我在其中放置一个简单的代码,验证器不再工作,甚至更多,它将执行我放置在按钮的 Click 属性中的简单代码。
如果必填字段为空,如何防止程序继续?我已经设置了 ControlToValid,当btnSubmitCheckup_Click内没有代码时,它可以完美运行,但如果我尝试在其中输入代码,它将向前移动并忽略 RequiredFieldValidator。
protected void btnSubmitCheckup_Click(object sender, EventArgs e)
{
Response.Write("asdasda"); ////will work even all other textboxes are empty but validators won't appear
//_con.Open();
//SqlCommand NewCheckup = new SqlCommand("dbo.NewCheckup", _con);
//NewCheckup.CommandType = CommandType.StoredProcedure;
//NewCheckup.Parameters.Add("@PatientID", SqlDbType.Int).Value = RadioButtonList_Patient.SelectedValue;
//NewCheckup.Parameters.Add("@DeptCode", SqlDbType.VarChar).Value = RadioButtonList_Department.SelectedValue;
//NewCheckup.Parameters.Add("@EmpID", SqlDbType.Int).Value = RadioButtonList_Employee.SelectedValue;
//NewCheckup.Parameters.Add("@CheckupDate", SqlDbType.Date).Value = BasicDatePicker1.SelectedDate;
//NewCheckup.Parameters.Add("@Diagnosis", SqlDbType.VarChar).Value = txtDiagnosis.Text;
//NewCheckup.ExecuteNonQuery();
//_con.Close();
//Response.Write("<script>Alert('Checkup Successfully recorded!')</script>");
}
这是我的来源
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewCheckup.aspx.cs" Inherits="Clinic_WebDev.NewCheckup" %>
<%@ Register assembly="BasicFrame.WebControls.BasicDatePicker" namespace="BasicFrame.WebControls" tagprefix="BDP" %>
<!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 runat="server">
<title>Bargamed Clinic - New Checkup</title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
width: 136px;
}
.style3
{
width: 250px;
}
#TextArea1
{
height: 104px;
width: 272px;
}
</style>
</head>
<body>
<table class="auto-style1">
<tr>
<td>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/InsertProcedure.aspx">Insert Procedure</asp:HyperLink>
</td>
<td>
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/InsertPatient.aspx">Insert Patient</asp:HyperLink>
</td>
<td>
<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="~/InsertEmployee.aspx">Insert Employee</asp:HyperLink>
</td>
<td>
<asp:HyperLink ID="HyperLink4" runat="server" NavigateUrl="~/InsertDepartment.aspx">Insert Department</asp:HyperLink>
</td>
<td>
<asp:HyperLink ID="HyperLink5" runat="server" NavigateUrl="~/NewCheckup.aspx">New Checkup</asp:HyperLink>
</td>
</tr>
</table>
<form id="form1" runat="server">
<table class="style1">
<tr>
<td align="right" bgcolor="#66FF66" class="style2">
Name of Patient</td>
<td bgcolor="#CCFFCC" class="style3">
<asp:TextBox ID="txtPatientName" runat="server" AutoPostBack="True"
TextMode="Search" Width="170px"></asp:TextBox>
</td>
<td bgcolor="#66FF66" style="margin-left: 80px">
Press Enter to search a patient
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
ControlToValidate="txtPatientName" ErrorMessage="Please search for a patient"
Font-Italic="True" Font-Names="Segoe UI" ForeColor="#666633"
EnableClientScript="False"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" bgcolor="#66FF66" class="style2">
Patient</td>
<td bgcolor="#CCFFCC" class="style3">
<asp:RadioButtonList ID="RadioButtonList_Patient" runat="server"
AutoPostBack="True" DataSourceID="SqlDataSource3" DataTextField="PatientName"
DataValueField="PatientID">
</asp:RadioButtonList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:CLINICConnectionString %>"
SelectCommand="SELECT PatientID, FirstName + ' ' + MiddleName + ' ' + LastName AS PatientName FROM PATIENT WHERE (FirstName + ' ' + MiddleName + ' ' + LastName LIKE '%' + @PatientName + '%')">
<SelectParameters>
<asp:ControlParameter ControlID="txtPatientName" Name="PatientName"
PropertyName="Text" />
</SelectParameters>
</asp:SqlDataSource>
</td>
<td bgcolor="#66FF66">
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
ControlToValidate="RadioButtonList_Patient"
ErrorMessage="Please select the patient" Font-Italic="True" Font-Names="Segoe UI"
ForeColor="#666633"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" bgcolor="#66FF66" class="style2">
Department
</td>
<td bgcolor="#CCFFCC" class="style3">
<asp:RadioButtonList ID="RadioButtonList_Department" runat="server"
AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="DeptName"
DataValueField="DeptCode"
onselectedindexchanged="RadioButtonList_Department_SelectedIndexChanged">
</asp:RadioButtonList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CLINICConnectionString %>"
SelectCommand="SELECT DeptCode, DeptName, Status FROM DEPARTMENT">
</asp:SqlDataSource>
</td>
<td bgcolor="#66FF66">
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="RadioButtonList_Department"
ErrorMessage="Please select the department" Font-Italic="True"
Font-Names="Segoe UI" ForeColor="#666633"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" bgcolor="#66FF66" class="style2">
Employee</td>
<td bgcolor="#CCFFCC" class="style3">
<asp:RadioButtonList ID="RadioButtonList_Employee" runat="server"
DataSourceID="SqlDataSource2" DataTextField="EmpName" DataValueField="EmpID">
</asp:RadioButtonList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:CLINICConnectionString %>"
SelectCommand="SELECT EmpID, EmpName, EmpStatus, Contact FROM EMPLOYEE WHERE (EmpID IN (SELECT EmpID FROM EMPLOYEE_SPECIALIZATION WHERE (DeptCode LIKE @DeptCode)))">
<SelectParameters>
<asp:ControlParameter ControlID="RadioButtonList_Department"
DefaultValue="None" Name="DeptCode" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
</td>
<td bgcolor="#66FF66">
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="RadioButtonList_Employee"
ErrorMessage="Please select the employee" Font-Italic="True"
Font-Names="Segoe UI" ForeColor="#666633"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" bgcolor="#66FF66" class="style2">
<asp:Label ID="Label1" runat="server" Text="Date of Checkup"></asp:Label>
</td>
<td bgcolor="#CCFFCC" class="style3">
<BDP:BasicDatePicker ID="BasicDatePicker1" runat="server" />
</td>
<td bgcolor="#66FF66">
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="BasicDatePicker1"
ErrorMessage="Please select the date of checkup" Font-Italic="True"
Font-Names="Segoe UI" ForeColor="#666633"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right" bgcolor="#66FF66" class="style2">
<asp:Label ID="Label2" runat="server" Text="Diagnosis"></asp:Label>
</td>
<td bgcolor="#CCFFCC" class="style3">
<asp:TextBox ID="txtDiagnosis" runat="server" Height="67px"
TextMode="MultiLine" Width="247px"></asp:TextBox>
</td>
<td bgcolor="#66FF66">
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="txtDiagnosis" ErrorMessage="Please put the diagnosis"
Font-Italic="True" Font-Names="Segoe UI" ForeColor="#666633"
ValidationGroup="ValidationGroupDaw"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td bgcolor="#66FF66" class="style2">
</td>
<td align="center" bgcolor="#CCFFCC" class="style3">
<asp:Button ID="btnSubmitCheckup" runat="server"
onclick="btnSubmitCheckup_Click" PostBackUrl="~/NewCheckup.aspx"
Text="Submit Checkup" CausesValidation="False"
ValidationGroup="ValidationGroupDaw" />
</td>
<td bgcolor="#66FF66">
</td>
</tr>
<tr>
<td bgcolor="#66FF66" class="style2">
</td>
<td bgcolor="#CCFFCC" class="style3">
</td>
<td bgcolor="#66FF66">
</td>
</tr>
</table>
</form>
</body>
</html>
您是在说您的按钮无法进行验证吗? 尝试将您的原因验证更改为 true,欢呼:)
<td align="center" bgcolor="#CCFFCC" class="style3">
<asp:Button ID="btnSubmitCheckup" runat="server"
onclick="btnSubmitCheckup_Click" PostBackUrl="~/NewCheckup.aspx"
Text="Submit Checkup" CausesValidation="true"
ValidationGroup="ValidationGroupDaw" />
</td>
首先,你的按钮包含CausesValidation="False"
,这将使它不调用客户端验证。
实际上发生的错误是,如果您不填写任何代码,它确实会验证,但这可能是因为您无法判断无论如何都调用了按钮事件。
至于确保调用验证,您应该在按钮单击事件中添加验证,如下所示:
protected void btnSubmitCheckup_Click(object sender, EventArgs e)
{
validate();
if(page.IsValid)
{
//your code here
}
else
{
//if you want to do something special if validation fails
}
}