検証コントロールを動的に作成し、それらを更新パネルに追加しています。ただし、クライアント側の検証は起動しません。
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>
コードビハインドは次のとおりです。
Dim Survey As New Survey
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Survey.RenderPage(PlaceHolder1)
End Sub
検証コントロールを作成するクラスは次のとおりです。
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
次にヒットすると、クライアント側の検証は決して起動しません。本当に奇妙なのは、ボタンを別の更新パネル内にラップすると、検証が開始されることです (IE と Firefox では発生しますが、Chrome や Safari では発生しません)。
何が起こっているのか誰にも考えがありますか?Asp.net AJAX の最初のバージョンが検証コントロールをサポートしていなかったことは知っていますが、私の側ではすべてが最新です。