Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 自定义验证程序未启动(没有错误消息,但没有验证)_Asp.net_Vb.net_Validation_Master Pages_Findcontrol - Fatal编程技术网

Asp.net 自定义验证程序未启动(没有错误消息,但没有验证)

Asp.net 自定义验证程序未启动(没有错误消息,但没有验证),asp.net,vb.net,validation,master-pages,findcontrol,Asp.net,Vb.net,Validation,Master Pages,Findcontrol,我有一个自定义验证器: <asp:CustomValidator ID="QuestionValidator" runat="server" ErrorMessage="Please select an option" ClientValidationFunction="QuestionValidator_ServerValidate" OnServerValidate="QuestionValidator_ServerValidate" ValidateEmptyText="true"

我有一个自定义验证器:

 <asp:CustomValidator ID="QuestionValidator" runat="server" ErrorMessage="Please select an option" ClientValidationFunction="QuestionValidator_ServerValidate" OnServerValidate="QuestionValidator_ServerValidate" ValidateEmptyText="true"></asp:CustomValidator> 

我有一个由datalist提供的问题列表,我需要确保用户选择每个问题的答案。然后,我有我的验证功能:

Protected Sub QuestionValidator_ServerValidate(ByVal source As Object, ByVal args As ServerValidateEventArgs)
    Dim SelectedItem As Boolean = False
    For Each c As Control In Page.Master.FindControl("form1").Controls
        If TypeOf c Is RadioButton Then
            Dim rb As RadioButton = DirectCast(c, RadioButton)
            If rb.GroupName = "AnswerOptions" AndAlso rb.Checked = True Then
                SelectedItem = True
            End If
        End If
    Next
    args.IsValid = SelectedItem
End Sub

<script type="text/javascript" language="javascript">  
   function QuestionValidator_ServerValidate() {   
        return true;   
    }   
</script>  
protectedsubquestionvalidator\u ServerValidate(ByVal源作为对象,ByVal args作为ServerValidateEventArgs)
将SelectedItem设置为布尔值=False
对于Page.Master.FindControl(“form1”).Controls中的每个c As控件
如果c的类型是单选按钮,那么
作为RadioButton的Dim rb=DirectCast(c,RadioButton)
如果rb.GroupName=“AnswerOptions”且rb.Checked=True,则
SelectedItem=True
如果结束
如果结束
下一个
args.IsValid=SelectedItem
端接头
函数QuestionValidator_ServerValidate(){
返回true;
}   
当我运行页面时,没有验证,也没有错误消息。请你指出我哪里出了问题,我怀疑它在
Page.Master.FindControl(“form1”).Controls


我以前通过form1.controls在控件之间循环进行过此类验证,但这是不可用的,因为页面使用了通过母版页传递的表单。

我将尝试通过“page.NamingContainer”或“page.controls”进行循环,并查看如何进行。

我将尝试通过“page.NamingContainer”或“page.controls”进行循环“Page.Controls”并查看它是如何运行的。

也许我遗漏了一些内容,但是您不应该在自定义验证器中也设置属性ControlToValidate=“ID\u of the_control\u to_validate”?

也许我遗漏了一些内容,但是您不应该也将属性ControlToValidate=“ID\u of the_of the_control\u设置为\u validate吗“在自定义验证器中?

我认为您需要为CustomValidator和Validaiton流程中涉及的所有控件提供ValidationGroup

我认为您需要为CustomValidator和Validaiton流程中涉及的所有控件提供ValidationGroup

您的代码中可能存在缺陷。因为按照逻辑,如果页面上的50个单选按钮中只有一个被选中,那么验证将通过。此外,所有RBs的组名对于每个项目都是相同的。不确定ASP.NET是否重命名了这些问题,如果不是,则所有RBs都将被分组为一个问题

对于循环部分,您可以在DataList.Items集合中循环,而不是在窗体上的所有控件中循环: 将项目设置为DataListItem

For Each item In  DataList1.Items
   Dim ctrl As Control
   For Each ctrl In  item.Controls
         'do your rb state check here       
   Next ctrl
Next item

您的代码中可能有缺陷。因为按照逻辑,如果页面上的50个单选按钮中只有一个被选中,那么验证将通过。此外,所有RBs的组名对于每个项目都是相同的。不确定ASP.NET是否重命名了这些问题,如果不是,则所有RBs都将被分组为一个问题

对于循环部分,您可以在DataList.Items集合中循环,而不是在窗体上的所有控件中循环: 将项目设置为DataListItem

For Each item In  DataList1.Items
   Dim ctrl As Control
   For Each ctrl In  item.Controls
         'do your rb state check here       
   Next ctrl
Next item

这应该是客户端验证吗?我在一些浏览器上验证时遇到了问题。如果可能的话,两个浏览器目前都不工作。这应该是客户端验证吗?我在一些浏览器上验证时遇到了问题。如果可能的话,两个浏览器都不工作。我也尝试了Page.Controls(它给了我相同的结果)。如果我改为page.namingcontainer.controls,我会得到一张借条。ThanksI也尝试了Page.Controls(它给了我同样的结果)。如果我改为page.namingcontainer.controls,我会得到一张借条。谢谢