用户控件是否可以通过某种方式确定其“上下文”或其父级.aspx页面?ASP.NET用户控件可以确定其上下文或其父级.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或其他,但我想知道最好的方法是什么。
简而言之,用户控件可以从声明它的页面获得某种“上下文”,还是有更好的方法来完成这种事情?谢谢。
- 与进近EDIT UPDATE拟议--------------------------
代码添加到该用户控件:
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>
这就好像我在我之前的回答中提到的“更标准”的方法(用例子)。在我以前的答案。但我会给你投票,因为我同意你的方法100%。 – David 2010-03-08 23:20:08
谢谢大卫和戴夫。我编辑了这个问题,把我对你的建议的看法合并在一起,这些建议很好用。 – 2010-03-12 20:45:37