2009-08-07 6 views
0

私は動的に検証コントロールを作成し、更新パネルに追加しています。ただし、クライアント側の検証は実行されません。ここで動的検証コントロールは更新パネルでは機能しません

は、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の最初のバージョンが検証コントロールをサポートしていないことを知っていますが、すべてが私の目的で最新です。

答えて

0

更新パネルが非同期それはあなたの動的なコントロールとコントロールのツリーを作成することはできませんサーバーにポストバックが発生すると、私はそこに2つの問題

  1. を参照してください - あなたがScriptManager.IsInAsyncPostBackのためのPage_LoadからRenderPageを呼び出すことを確認してください==真
  2. アップデートパネルの下に使用バリデータの問題があります - アップデートパネルが動作する前にスクリプトを読み込む必要があります。私はあなたに、UpdatePanelの下で架空のRequiredFieldValidatorを割り当てるよう提案することができます。 Display = none(ただし、Visible = false !!!ではない)を設定するか、ValidationGroupを指定しないでください。これにより、JScriptをユーザーページにレンダリングできます。
+0

お返事ありがとうございます。私はIEとFirefoxでは動作させることができますが、ChromeやSafariでは動作させることができないので、別の質問を投稿しました。 http://stackoverflow.com/questions/1247032/asp-net-dynamic-validators-dont-work-in-chrome-or-safari –

関連する問題