ユーザー コントロールがその「コンテキスト」またはその親 .aspx ページを何らかの方法で決定することは可能ですか?
現在、一般的な .aspx ページで次のように宣言されているユーザー コントロールがあります。
<%@ Register TagPrefix="uc1" TagName="ManageTitle" Src="../UserControls/ManageTitle.ascx" %>
ユーザー コントロールは現在、次のようにテキスト ボックスを生成します。
<asp:textbox id="txtTitle" runat="server" MaxLength="60"
ToolTip="Describe the item with a short pithy title - most important keywords first"/>
この .ascx ファイルの page_load は現在、次のようになっています。
Me.txtTitle.Text = SetPageTitle()
この Web アプリにはこれが必要な場所 (つまり、エンド ユーザーが「タイトル」を入力できるテキスト ボックス) がありますが、「タイトル」情報を「読み取り専用」で表示したい場所もあります。たとえば、テキスト ボックスではなく、ラベル コントロールまたは Enabled="false" のテキスト ボックスを使用して、データ入力を防ぐことができます。
この小さな .ascx ファイルのクローンを作成し、その名前に _RO.ascx などのサフィックスを追加できると思いますが、最善の方法は何でしょうか。
要するに、ユーザーコントロールは、それを宣言するページからある種の「コンテキスト」を取得できますか、またはこの種のことを達成するためのより良い方法はありますか? ありがとうございました。
-- 提案されたアプローチで更新を編集 --------------------------
UserControl に追加されたコード:
Private mIsReadOnly As Boolean
Public Property IsReadOnly() As Boolean
Get
IsReadOnly = mIsReadOnly
End Get
Set(ByVal value As Boolean)
mIsReadOnly = value
End Set
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
'Leave the textbox alone
Else
Me.txtTitle.Text = SetPageTitle() 'This is the original code
If IsReadOnly Then
Me.txtTitle.Enabled = False
Else
Me.txtTitle.Enabled = True
End If
End If
End Sub
UC を呼び出す親に追加されたコード:
<uc1:ManageTitle id="ManageTitle"
IsReadOnly="True" runat="server">
</uc1:ManageTitle>