複数のコンテンツ ページに使用されるマスター ページがあります。すべてのコンテンツ ページには、ユーザー コントロールがあります。マスターページにあるボタンをクリックすると、そのコントロールのメソッドを呼び出したいです。
出来ますか?
これを行うと、コンテンツ ページ コントロールにアクセスできます
protected void Button1_Click(object sender, EventArgs e)
{
UserControl_Type uc1 =
(UserControl_Type)ContentPlaceHolder1.FindControl("UserControlId");
if (uc1 != null)
{
uc1.Method();
}
}
UserControl をマスター ページに移動し、masterpage cs ファイルのボタン クリックで usercontrol メソッドにアクセスする必要があると思います。このユーザー コントロールを表示したくないコンテンツ ページがある場合は、次の操作を実行できます。
コンテンツ プレースホルダーの使用:
マスターページ: 追加:
<asp:contentplaceholder id="UcControlPlaceHolder" runat="server">
<!-- User control here -->
</asp:contentplaceholder>
UserControl を表示したくないコンテンツ ページでは、次のタグを追加し、UserControl を表示するすべてのコンテンツ ページからこのタグを削除します。
<asp:Content ID="UcControlContent1"
ContentPlaceHolderID="UcControlPlaceHolder" Runat="Server">
</asp:Content>
マスターページにあるボタンをクリックすると、そのコントロールのメソッドを呼び出したい。それは可能でしょうか?
はいといいえ。クライアント側で話している場合は、はい、JavaScriptを介してコントロールのメソッドを呼び出すことができます。サーバーサイドで話しているのなら、違います。
ただし、コントロールがすべてのコンテンツページで使用できる場合、マスターページに存在するための非常に良い候補であるかどうかを尋ねる必要があります。特定のコンテンツページで必要ない場合は、非表示にすることができます。