在基页类中使用用户控件

Pet*_*aud 7 .net c# vb.net asp.net

我有一个继承自Page的基页类.我们称之为SpiffyPage.

我还有一个名为SpiffyControl的用户控件.

然后我有一个aspx页面,ViewSpiffyStuff.aspx,继承自SpiffyPage.

在页面加载时,SpiffyPage类应该将SpiffyControl注入到aspx页面中.

问题是SpiffyControl是一个用户控件,并且实例化后面的代码必须访问ASP命名空间,类似于:

ASP.controls_spiffycontrol_aspx MyControl;
Run Code Online (Sandbox Code Playgroud)

但是SpiffyPage不是aspx页面,它只是一个基页,因此我无法访问ASP命名空间,因此我无法实例化SpiffyControl以便注入它.

我怎样才能实现目标?

编辑:

一个重点是我必须引用实际的控件类型,以便我可以为某些自定义属性赋值.这就是为什么像LoadControl这样返回类型Control的函数在这种情况下不起作用.

Joh*_*ino 10

在SpiffyControl中添加一个基类,如:

public class SpiffyBase : UserControl
{
    public void DoIt()
    {
        Response.Write("DoIt");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你让你的SpiffyControl继承那个基类,比如:

public partial class SpiffyControl : SpiffyBase
Run Code Online (Sandbox Code Playgroud)

那么你应该能够从一个Basepage类做​​到这一点:

public class BasePage : Page
{
    protected override void OnLoad(EventArgs e)
    {
        var c = Page.LoadControl("SpiffyControl.ascx") as SpiffyBase;

        Page.Controls.Add(c);

        c.DoIt();
    }
}
Run Code Online (Sandbox Code Playgroud)