ASP.Net-减少验证的重复代码-VB
我有一个表单,上面有许多下拉列表框。我根据表中的值显示或隐藏其中的每一行,然后向该行中包含的文本框添加requiredfieldvalidator。我在每个下拉列表的selectedindexchanged事件上执行此操作,其代码如下所示:ASP.Net-减少验证的重复代码-VB,asp.net,vb.net,Asp.net,Vb.net,我有一个表单,上面有许多下拉列表框。我根据表中的值显示或隐藏其中的每一行,然后向该行中包含的文本框添加requiredfieldvalidator。我在每个下拉列表的selectedindexchanged事件上执行此操作,其代码如下所示: Protected Sub cbOffCover_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbOffCover.SelectedIndexChanged If c
Protected Sub cbOffCover_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbOffCover.SelectedIndexChanged
If cbOffCover.SelectedValue = "N" Then
OffCoverRow.Visible = True
Dim rfOffcover As RequiredFieldValidator = New RequiredFieldValidator
With rfOffcover
.ControlToValidate = txtOffCover.ID
.SetFocusOnError = True
.ErrorMessage = "*"
.ForeColor = System.Drawing.Color.Red
End With
OffCoverCell.Controls.Add(rfOffcover)
Else
OffCoverRow.Visible = False
Dim c As Control
For Each c In OffCoverCell.Controls
If c.ID = "rfOffCover" Then
OffCoverCell.Controls.Remove(c)
End If
Next c
End If
End Sub
然后,我在每个下拉列表中重复使用此代码,以显示/隐藏不同名称的行,并将验证应用于不同的文本框
我的问题是有没有更好的方法?我不知道具体怎么写,但我忍不住认为我不必为每个下拉列表反复编写这么多代码(或复制/粘贴)。是否可以编写一个函数/类来完成这项工作,而我可以直接调用它?可能看起来很基本,但我是asp/vb新手。非常感谢您可以将其放入一个返回布尔值的函数中。调用函数时,将combobox本身和任何要验证的值传递给它。如果匹配,则返回true。试着这样做:
Public Function ValidateComboBox(someComboBox as ComboBox, expectedValue as String)
Dim result as Boolean = False
If someComboBox.SelectedValue = expectedValue Then
result = True
OffCoverRow.Visible = True
Dim rfOffcover As RequiredFieldValidator = New RequiredFieldValidator
With rfOffcover
.ControlToValidate = txtOffCover.ID
.SetFocusOnError = True
.ErrorMessage = "*"
.ForeColor = System.Drawing.Color.Red
End With
OffCoverCell.Controls.Add(rfOffcover)
Else
OffCoverRow.Visible = False
Dim c As Control
For Each c In OffCoverCell.Controls
If c.ID = "rfOffCover" Then
OffCoverCell.Controls.Remove(c)
End If
Next c
End If
Return result
End Function
当然,可以根据您的需要进行修改。可能您只返回值,并在控件的SelectedIndexChanged方法中执行其他操作。您可以使用同一方法简单地处理多个事件。我只需在句柄后复制部件并将其添加到一个大事件处理程序中。嗨,Christian,谢谢你的回复。我认为这不会作为要显示/隐藏的行的名称,也不会作为验证每个下拉列表的更改的文本框。我认为我在最初的问题中没有明确说明这一点,因此我对其进行了编辑以提供更多信息。您可以重构您的解决方案,以便根据传入的下拉列表动态选择cbOffCover。比如Dim Row=getRow(sender),其中getRow包含识别正确行的逻辑。谢谢道格拉斯,我将尝试根据我的需要调整它。我已经用重复编码完成了所有的工作,但是我会重新尝试一下