0

サイト全体に存在する必要がある 3 種類の ajax ポップアップがあります。それぞれのユーザーコントロールを作成し、パネルとモーダルポップアップエクステンダーをそれぞれの中に配置するだけでよいと思っていましたが、うまくいかないようです。誰かがこれを以前に試したことがありますか、または異なるページのポップアップごとにコードの重複を避ける方法についての推奨事項はありますか? ありがとう!

4

3 に答える 3

0

1 つのオプションは、ポップアップを asp.net ユーザー コントロール (.ascx ページ) に記述し、ポップアップが必要なページに含めることです。ポップアップを表示する ascx ページにパブリック メソッドを用意し、必要に応じて親ページから呼び出します。親ページに既にスクリプト マネージャーがある場合、ascx ページに 2 番目のスクリプト マネージャーを作成することはできませんが、それ以外の場合は、これが機能しなくなるようなことがあってはなりません。お役に立てれば!

編集:これが私のモーダルポップアップエクステンダーコントロールの外観です...

<cc1:ModalPopupExtender 
    ID="mpeClassroom" 
    BackgroundCssCLass="modalBackground"      
    runat="server"        
    CancelControlID="lbClose"
    OnOkScript="onOk()"
    TargetControlID="Button1" 
    PopupControlID="pnlClassroom">
</cc1:ModalPopupExtender>

コード ビハインド ページでは、メソッドは mpeClassroom.Show(); を呼び出すだけです。

于 2009-02-05T22:05:13.677 に答える
0

TrgetControlID としての隠しリンクの問題は次のとおりです。可視性をfalseに設定すると、サーバーもレンダリングしません。その場合、PopExtender はページ上でコントロールを見つけることができません。

可視性を false に設定する代わりに、display:none でスタイルを適用してみてください。これはうまくいくはずです!

于 2009-06-13T09:20:41.673 に答える
0

ああ、私が信じているユーザーコントロールに関する問題を理解しました。

ModalPopUpExtender では、TargetID プロパティを設定する必要があります。そうしないと、エラーが発生します。これは UserControl にあるため、何もしないダミーのリンク ボタンを作成し、visible プロパティを false に設定しました。

    <asp:LinkButton ID="lnkBlank" runat="server" Visible="false" />
    <asp:Panel ID="plContainer" style="display: none;" runat="server">
            Hello?
    </asp:Panel>
    <cc1:ModalPopupExtender ID="mpe" runat="server" 
            BehaviorID="test"
            TargetControlID="lnkBlank" 
            PopupControlID="plContainer" />

どうやらそれは評価されておらず、visible プロパティを true に設定した瞬間に機能し始めました。ほとんどのポップアップはページに関する複数のリンクから呼び出される可能性があるため、TargetID の理由が何であるかはわかりません。おそらく、このコントロールがどのように使用されることになっているのか、まだ完全には明確ではありません。

于 2009-02-05T22:17:39.237 に答える