在没有页面的情况下使用LoadControl

时间:2010-07-22 20:49:42

标签: c# asp.net

如何在没有Page的情况下加载控件?

public void Something()
{
    var ascx = /*LoadControl*/("my.ascx"); // being Page = null
    var ctl1 = ascx.Controls[0];
    var ctl2 = ascx.Controls[1];
}

my.ascx:

<%@ Control Language="C#" %>
<asp:Literal ID="ctl1" runat="server" />
<asp:Label ID="ctl2" runat="server" />

3 个答案:

答案 0 :(得分:13)

您可以通过以下方式从HttpContext获取您的Page-Object:

Page page = HttpContext.Current.Handler as Page;
if (page != null)
{
     // Use page instance to load your Usercontrol
}

答案 1 :(得分:3)

如果您没有页面的新实例,则可以随时创建:

(Page ?? new Page()).LoadControl(...)

答案 2 :(得分:-1)