在将模块/控件添加到具有表单验证的 ASP.NET CMS 中的网页时,我遇到了一个问题,它将验证页面上的所有表单,因为 ValidationGroup 具有相同的名称。如何用函数解决这个问题?
问问题
172 次
1 回答
0
我想出了以下解决方案:
遍历某个占位符以将唯一的 ValidationGroup 名称分配给每个表单的函数。
Public Shared Sub SetValGroupControls(PageModule As Control, valGroupName As String)
For Each ctrl As Control In PageModule.Controls
If TypeOf ctrl Is RequiredFieldValidator Then
DirectCast(ctrl, RequiredFieldValidator).ValidationGroup = valGroupName
ElseIf TypeOf ctrl Is RegularExpressionValidator Then
DirectCast(ctrl, RegularExpressionValidator).ValidationGroup = valGroupName
ElseIf TypeOf ctrl Is CompareValidator Then
DirectCast(ctrl, CompareValidator).ValidationGroup = valGroupName
ElseIf TypeOf ctrl Is CustomValidator Then
DirectCast(ctrl, CustomValidator).ValidationGroup = valGroupName
ElseIf TypeOf ctrl Is RangeValidator Then
DirectCast(ctrl, RangeValidator).ValidationGroup = valGroupName
ElseIf TypeOf ctrl Is Button Then
DirectCast(ctrl, Button).ValidationGroup = valGroupName
End If
If ctrl.Controls.Count > 0 Then
SetValGroupControls(ctrl, valGroupName)
End If
Next
End Sub
其中 PageModule 代表包含验证控件的占位符(以避免遍历页面上的所有控件),而 ValGroupName 代表将被分配为名称的唯一字符串。
假设我的验证控件包含在一个名为“plhMyForm”的占位符中,您可以像这样调用该函数:
Dim nGuid = String.format("{0}-validation", Guid.NewGuid())
SetValGroupControls(plhMyForm, nGuid)
上面将创建一个独特的字符串,如: 24ad5ae3-fead-4a6f-98f3-dffcd2e815ba-validation
当然,您可以使用自己独特的字符串生成。
现在您可以将 ValidationGroup 名称留空,该函数会为您分配一个。这样,同一页面上需要验证的每个表单都将单独验证自己。
于 2013-01-29T11:27:21.100 回答