我有一个 CustomValidator 来检查文本框中输入的文本是否与数据库中的某些字段匹配。以前这一切都很好,但是从那时起我已经对我的页面进行了相当多的修改,它不再工作了。我认为我没有改变任何会影响这一点的东西,但显然我做到了。我的所有其他验证器(必填字段验证器)都正常工作,但我的 CustomValidator 没有响应。
所以无论如何,这是我的代码:
自定义验证器:
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtCoursePrefix" ErrorMessage="Course number is already taken."></asp:CustomValidator>
VB代码隐藏:
Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
'Checking for duplicate course numbers
'get values
Dim checkPrefix = txtCoursePrefix.Text
Dim checkNum = txtCourseNum.Text
'db connectivity
Dim myConn As New OleDbConnection
myConn.ConnectionString = AccessDataSource2.ConnectionString
myConn.Open()
'select records
Dim mySelect As New OleDbCommand("SELECT 1 FROM tableCourse WHERE prefix=? AND course_number=?", myConn)
mySelect.Parameters.AddWithValue("@checkPrefix", checkPrefix)
mySelect.Parameters.AddWithValue("@checkNum", checkNum)
'execute(Command)
Dim myValue = mySelect.ExecuteScalar()
'check if record exists
If myValue IsNot Nothing Then
CustomValidator1.SetFocusOnError = True
args.IsValid = False
End If
End Sub
一切正常,直到 CustomValidator1.SetFocusOnError = True 和 args.IsValid = False。我已经测试了 If 语句并且它工作正常,它返回 true 并且我放入其中的任何其他内容都会执行。