在父用户控件中访问子用户控件的属性
Posted
技术标签:
【中文标题】在父用户控件中访问子用户控件的属性【英文标题】:Access child user control's property in parent user control 【发布时间】:2011-01-16 12:02:16 【问题描述】:我在另一个静态代码中包含了一个用户控件:
将以下指令放在父页面的 asp 代码中或 用户控制:
<%@ Register src="Name_of_your_child_control.ascx"
tagname="Name_of_your_child_control" tagprefix="uc1" %>
在父页面/控件的asp-code中使用以下标签:
<uc1:Name_of_your_child_control ID="Name_of_your_child_control1"
runat="server" />
..... 但问题是...我无法访问包含在给定用户控件(父用户控件)中的用户控件的公共属性(子用户控件)...
请帮忙:(
【问题讨论】:
【参考方案1】:使用
Name_of_your_child_control1.PublicPropertyName
必须适用于您的父用户控件。
【讨论】:
【参考方案2】:假设你的用户控件是这样的:
<%@ Control Inherits="Project.MyControl" Codebehind="MyControl.ascx.cs" %>
<asp:TextBox ID="TB" runat="server" />
您的控制代码隐藏:
namespace Project
public partial class MyControl : UserControl
public string MyTextProperty
get return TB.Text;
set TB.Text = value;
在包含控件的父页面中,如下所示:
<%@ Register src="~/MyControl.ascx" tagname="MyControl" tagprefix="uc1" %>
<uc1:MyControl ID="MyControlID" runat="server" />
您可以在代码中使用该属性:
MyControlID.MyTextProperty = "bob";
【讨论】:
但是......对我来说它即将到来,因为我无法访问该属性:( @Anish - 如果你引用它就好像它在那里并编译,你会得到什么错误? 你的父页面也是用户控件吗?父页面 uc1 uc2 @Anish - 您想从父控件的代码隐藏,还是从包含父控件的页面的代码隐藏访问属性? 我有 2 个用户控件:uc1 和 uc2 还有一个父页面 p1。我在 p1 中包含了 uc1。现在我需要在 uc1 中包含 uc2 ...并在 uc1 中访问 uc2 属性【参考方案3】:检查您正在使用的路径和文件名,Anish。你有问题。 Visual Studio 是否告诉您它找不到控件?它在编译时失败了吗?运行时?
【讨论】:
【参考方案4】:这很有趣,但是每当您向用户控件添加属性时。
您需要在父项中重新注册。所以在你的情况下,
在此行末尾添加一个空格并再次将其删除:
$<% Register src="~/MyControl.ascx" tagname="MyControl" tagprefix="uc1" %>
这将重新注册用户控件,您将能够访问新属性。
【讨论】:
以上是关于在父用户控件中访问子用户控件的属性的主要内容,如果未能解决你的问题,请参考以下文章