Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将控件中的对象强制转换为其父控件中的类_C#_Asp.net - Fatal编程技术网

C# 将控件中的对象强制转换为其父控件中的类

C# 将控件中的对象强制转换为其父控件中的类,c#,asp.net,C#,Asp.net,我正在尝试访问当前控件的父控件的成员 这是家长: public partial class Controls_MyPanel : System.Web.UI.UserControl { private String _strSubTitle = String.Empty; public String SubTitle { get { return _strSubTitle; } set { _str

我正在尝试访问当前控件的父控件的成员

这是家长:

public partial class Controls_MyPanel : System.Web.UI.UserControl
{
    private String _strSubTitle = String.Empty;

    public String SubTitle
    {
        get { return _strSubTitle; }
        set
        {
            _strSubTitle = value;
            lblSubTitle.Text = _strSubTitle;
        }
    }
}
下面是子控件:

public partial class Controls_MyChild : System.Web.UI.UserControl
{
    function ChangeSubTitle
    {
        ((Controls_MyPanel)Parent.Parent).SubTitle = "Foo";
    }
}
我不知道如何将控件的定义放入控件中。我不能使用
使用
,因为我没有命名空间。我尝试添加一些类似的内容:

<%@ Register src="MyPanel.ascx" tagname="MyPanel" tagprefix="uc1" %>


添加到
MyChild
的标记,但这当然是循环的,因为
MyChild
已在
MyPanel

上注册,如果您创建了一个网站项目(使用ASP.net)而不是纯ASP.net应用程序,则会发生这种情况

File->New->Web Sites...
而不是

File->New->Project...->Visual C#->Web->ASP.NET Web Application
在Web站点项目中,加载页面时动态编译代码隐藏文件。它们是隔离的,因此除非在aspx/ascx文件中注册,否则不能引用类的名称,在您的情况下,这将创建循环依赖关系

为了解决这个问题,如果您不想更改项目类型,可以使用接口

  • 右键单击网站项目,添加->添加新项目

  • 选择“类”。如果要将文件放入App_代码中,Visual Studio将提示您。对

  • 在生成的文件中,将
    公共类类名
    更改为
    公共接口
    。然后定义一个属性,如
    stringsubtitle{get;set;}

  • 在父控件中实现接口

  • 在子控件中,将
    Parent.Parent
    强制转换为
    isomoInterface


  • 然后,您可以通过
    接口
    接口访问
    SubTitle
    属性。

    如果您创建了一个网站项目(使用ASP.net)而不是纯ASP.net应用程序,则会发生这种情况

    File->New->Web Sites...
    
    而不是

    File->New->Project...->Visual C#->Web->ASP.NET Web Application
    
    在Web站点项目中,加载页面时动态编译代码隐藏文件。它们是隔离的,因此除非在aspx/ascx文件中注册,否则不能引用类的名称,在您的情况下,这将创建循环依赖关系

    为了解决这个问题,如果您不想更改项目类型,可以使用接口

  • 右键单击网站项目,添加->添加新项目

  • 选择“类”。如果要将文件放入App_代码中,Visual Studio将提示您。对

  • 在生成的文件中,将
    公共类类名
    更改为
    公共接口
    。然后定义一个属性,如
    stringsubtitle{get;set;}

  • 在父控件中实现接口

  • 在子控件中,将
    Parent.Parent
    强制转换为
    isomoInterface


  • 然后,您可以通过
    接口
    接口访问
    SubTitle
    属性。

    如果您创建了一个网站项目(使用ASP.net)而不是纯ASP.net应用程序,则会发生这种情况

    File->New->Web Sites...
    
    而不是

    File->New->Project...->Visual C#->Web->ASP.NET Web Application
    
    在Web站点项目中,加载页面时动态编译代码隐藏文件。它们是隔离的,因此除非在aspx/ascx文件中注册,否则不能引用类的名称,在您的情况下,这将创建循环依赖关系

    为了解决这个问题,如果您不想更改项目类型,可以使用接口

  • 右键单击网站项目,添加->添加新项目

  • 选择“类”。如果要将文件放入App_代码中,Visual Studio将提示您。对

  • 在生成的文件中,将
    公共类类名
    更改为
    公共接口
    。然后定义一个属性,如
    stringsubtitle{get;set;}

  • 在父控件中实现接口

  • 在子控件中,将
    Parent.Parent
    强制转换为
    isomoInterface


  • 然后,您可以通过
    接口
    接口访问
    SubTitle
    属性。

    如果您创建了一个网站项目(使用ASP.net)而不是纯ASP.net应用程序,则会发生这种情况

    File->New->Web Sites...
    
    而不是

    File->New->Project...->Visual C#->Web->ASP.NET Web Application
    
    在Web站点项目中,加载页面时动态编译代码隐藏文件。它们是隔离的,因此除非在aspx/ascx文件中注册,否则不能引用类的名称,在您的情况下,这将创建循环依赖关系

    为了解决这个问题,如果您不想更改项目类型,可以使用接口

  • 右键单击网站项目,添加->添加新项目

  • 选择“类”。如果要将文件放入App_代码中,Visual Studio将提示您。对

  • 在生成的文件中,将
    公共类类名
    更改为
    公共接口
    。然后定义一个属性,如
    stringsubtitle{get;set;}

  • 在父控件中实现接口

  • 在子控件中,将
    Parent.Parent
    强制转换为
    isomoInterface


  • 然后,您可以通过
    isomoInterface
    界面访问
    SubTitle
    属性。

    您应该已经可以访问它了。除非您在不同的名称空间中定义了它们,否则它们位于同一名称空间中。您遇到了什么错误?只是说
    找不到类型或命名空间名称“Controls\u MyPanel”(您是否缺少using指令或程序集引用?
    它们在同一个项目中?您应该已经可以访问它了。除非您在不同的名称空间中定义了它们,否则它们位于同一名称空间中。您遇到了什么错误?只是说
    找不到类型或命名空间名称“Controls\u MyPanel”(您是否缺少using指令或程序集引用?
    它们在同一个项目中?您应该已经可以访问它了。除非您在不同的名称空间中定义了它们,否则它们位于同一名称空间中。您得到了什么错误?它只是说
    类型或名称空间名称'Controls\u MyP