マスター ページがあり、プレースホルダーを 2 回追加したい - マスター ページの 2 つの場所に同じプレースホルダーがあり、実際のページがプレースホルダーのコンテンツを 1 回だけ指定し、そのコンテンツが結果のページに 2 回レンダリングされるようにします。目標は、コンテンツの重複を避けることです。
同じ ID のプレースホルダーを 2 回追加しようとすると、コンパイルされません。ASP.NET はそれを好みません。
どうすればそれを達成できますか?他のオプションは何ですか?
マスター ページがあり、プレースホルダーを 2 回追加したい - マスター ページの 2 つの場所に同じプレースホルダーがあり、実際のページがプレースホルダーのコンテンツを 1 回だけ指定し、そのコンテンツが結果のページに 2 回レンダリングされるようにします。目標は、コンテンツの重複を避けることです。
同じ ID のプレースホルダーを 2 回追加しようとすると、コンパイルされません。ASP.NET はそれを好みません。
どうすればそれを達成できますか?他のオプションは何ですか?
プレースホルダーを に配置しAction
、必要に応じて呼び出します。
<%
Action myPlaceholder = () =>
{%>
<asp:ContentPlaceHolder ID="X" runat="server" />
<%}
%>
...次に、コード内の必要な場所で呼び出します。
<% if (conditionMet)
myPlaceholder(); >%
エラーはコンパイル時に発生します。同じ ID を持つプレースホルダーが存在する場合、苦情が発生します。このアプローチはそのハードルをクリアし、多くの柔軟性を提供します。
おそらくユーザーコントロールを探していると思います:
http://msdn.microsoft.com/en-us/library/y6wb1a0e.aspx
ユーザー コントロールを使用すると、マークアップとコード ビハインドを に追加し、.ascx
これをマスター ページ/Web フォームで複数回呼び出すことができるため、コードの重複を回避できます。
私はこれを試していませんが、複製したいプレースホルダーの内容を調べて、コード ビハインドにコピーすることができます。この投稿: http://programcsharp.com/blog/archive/2009/01/22/test-if-masterpage-contentplaceholder-has-content-or-is-empty.aspx
マスターページの操作について、ある程度の洞察があります。