什么我不能从我的aspx.cs文件访问UserControl?

时间:2009-07-20 09:34:53

标签: asp.net user-controls

我有一个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
    }

3 个答案:

答案 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;重建解决方案并对事情进行排序,或者至少指出正确的方向。