Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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/2/ajax/6.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 动态验证控件Don';无法在更新面板中工作_Asp.net_Ajax_Validation Controls - Fatal编程技术网

Asp.net 动态验证控件Don';无法在更新面板中工作

Asp.net 动态验证控件Don';无法在更新面板中工作,asp.net,ajax,validation-controls,Asp.net,Ajax,Validation Controls,我正在动态创建验证控件并将其添加到更新面板。但是,客户端验证从未启动 以下是aspx文件: <div> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:Plac

我正在动态创建验证控件并将其添加到更新面板。但是,客户端验证从未启动

以下是aspx文件:

<div>
    <asp:UpdatePanel ID="UpdatePanel1"  UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </ContentTemplate>
    <Triggers >
        <asp:AsyncPostBackTrigger ControlID ="Button1" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

<asp:Button ID="Button1" runat="server" Text="Button"  CausesValidation="true"/>


</div>
以下是创建验证控件的类:

Public Class Survey

    Public Sub RenderPage(ByVal PlaceHolder As PlaceHolder)

        Dim textbox As New TextBox
        textbox.ID = "testing"
        PlaceHolder.Controls.Add(textbox)

        Dim val As New RequiredFieldValidator
        val.ControlToValidate = textbox.ID
        val.Text = "required"
        val.EnableClientScript = True
        PlaceHolder.Controls.Add(val)

    End Sub
End Class
当您点击next时,客户端验证永远不会启动。真正奇怪的是,当你将按钮包装到另一个更新面板中时,验证会启动(在IE和Firefox中,但在Chrome或Safari中不会)

有人知道发生了什么事吗?我知道Asp.net AJAX的第一个版本不支持验证控件,但在我这方面,一切都是最新的。

我发现有两个问题

  • 当“更新”面板导致异步回发到服务器时,它无法使用动态控件创建控件树-因此请检查是否从页面加载为ScriptManager调用RenderPage。IsInAsyncPostBack==true
  • 更新面板下存在使用验证程序问题-必须在更新面板工作之前加载脚本。我可以建议您在UpdatePanel下分配虚构的RequiredFieldValidator。将它们设置为Display=none(但不可见=false!!!)或place为nonexistence ValidationGroup。这允许将JScript呈现到页面中

  • 谢谢你的回复。在玩了一段时间之后,我可以让它在IE和Firefox中工作,但不能在Chrome或Safari中工作,所以我发布了一个单独的问题。
    Public Class Survey
    
        Public Sub RenderPage(ByVal PlaceHolder As PlaceHolder)
    
            Dim textbox As New TextBox
            textbox.ID = "testing"
            PlaceHolder.Controls.Add(textbox)
    
            Dim val As New RequiredFieldValidator
            val.ControlToValidate = textbox.ID
            val.Text = "required"
            val.EnableClientScript = True
            PlaceHolder.Controls.Add(val)
    
        End Sub
    End Class