问:当我将btnSubmitCheckup_Click属性设为空时,所有RequiredFieldValidators都在工作。但是如果我在其中放入一个简单的代码,验证器就不再起作用了,它将执行我放在按钮的Click属性中的简单代码。
如果必填字段为空,如何阻止程序继续运行?我已经设置了ControlToValidate,当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>
答案 0 :(得分:2)
你在说你的按钮不能用于验证吗?尝试将您的CausesValidation更改为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>
答案 1 :(得分:1)
首先,您的按钮包含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
}
}