按代码填充ITemplate

时间:2011-11-28 14:08:03

标签: c# asp.net

有没有办法用代码填充ITemplate? 假设我有一个UpdatePanel

UpdatePanel upnl = new UpdatePanel();
// What should be done next?
//upnl.ContentTemplate = ...

,结果相当于:

<asp:UpdatePanel runat="server" ID="upnl">
    <ContentTemplate>
    test
    </ContentTemplate>
</asp:UpdatePanel>

2 个答案:

答案 0 :(得分:5)

如果我正确理解你的问题,我们会这样做:

public class YourTemplate : ITemplate 
{
    public void InstantiateIn(Control container)
    {
        container.Controls.Add(new LiteralControl("test"));
    }
}

...
upnl.ContentTemplate = new YourTemplate();

答案 1 :(得分:1)

ASP.net中所有启用模板的控件必须实现System.Web.UI.ITemplate接口才能在运行时创建模板。

  

但是在更新的情况下,您无需创建自定义Template类   面板。检查UpdatePanel.ContentTemplateContainer Property -

ContentTemplateContainer属性使您能够以编程方式将子控件添加到UpdatePanel控件,而无需定义继承自ITemplate接口的自定义模板。如果要以声明方式或通过设计器向UpdatePanel控件添加内容,则应使用<ContentTemplate> element将内容添加到ContentTemplate属性。

检查此代码段 - 有关详细信息,请查看上面的ContentTemplateContainer链接。

UpdatePanel up1 = new UpdatePanel();
up1.ID = "UpdatePanel1";
Button button1 = new Button();
button1.ID = "Button1";
button1.Text = "Submit";
button1.Click += new EventHandler(Button_Click);
up1.ContentTemplateContainer.Controls.Add(button1);
Page.Form.Controls.Add(up1);