我有一个default.aspx文件和2个用户控件。
用户控制代码1
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<%@ Register Src="~/WebUserControl2.ascx" TagName="wc1" TagPrefix="asp2" %>
<asp2:wc1 ID="control1" runat="server" />
用户控制代码2
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" %>
为什么我无法从用户控件2中的源代码访问用户控件1?
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl //Doesn't work
}
答案 0 :(得分:1)
您需要通过控件的名称访问,而不是通过其类:
control1.DoSomething();
一般来说,UserControl类在ASP.Net项目中不可见,因为编译会将其添加到不同的程序集中。
答案 1 :(得分:0)
您需要在usercontrol1类型的usercontrol2中创建一个公共属性。在将托管两个控件的实例的页面中,将usercontrol1的引用分配给usercontrol2的属性,usercontrol2的类型为usercontrol1。
您无法访问的原因是,您需要usercontrol2中的userocntrol1实例。使用上述方法可以解决这个问题。
答案 2 :(得分:0)
尝试相反的做法,你可以从Ucrl:1访问Ucrl:2吗?公开一个公共财产,看看你是否可以揭露它:
来自Ucrl:1&gt;页面加载&gt;Ucr2.MyProp
有时做一个Build&gt;清洁解决方案然后构建&gt;重建解决方案并对事情进行排序,或者至少指出正确的方向。