Возможно ли, чтобы пользовательский элемент управления каким-то образом определял свой «контекст» или родительскую страницу .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"/>
В настоящее время page_load для этого файла .ascx выглядит следующим образом:
Me.txtTitle.Text = SetPageTitle()
Хотя в некоторых местах этого веб-приложения это необходимо (например, текстовое поле, где конечный пользователь может ввести «заголовок»), у меня есть другие места, где я хочу отображать информацию «заголовок» в режиме «только для чтения». Например, вместо текстового поля я мог бы использовать элемент управления меткой или текстовое поле с 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>