C# FormView.InsertItemlate中的ITemplate在回发后消失

C# FormView.InsertItemlate中的ITemplate在回发后消失,c#,asp.net,formview,itemplate,C#,Asp.net,Formview,Itemplate,我有一个UserControl,其中有一个FormView 表单视图只有一个InsertItemTemplate(我不需要其他任何东西) 在调用者(页面)中,我有类似的内容(我将数据源传递给UC,并从后面的代码中设置FormView的数据源。这没有问题): 自定义字段: 我的问题是;当我点击链接按钮并回发时,自定义内容(即我放在模板字段中的内容)将消失 如果将asp:占位符放置在FormView.InsertItemTemplate之外,则不会出现任何问题。然而,这不是我需要的 我需要Ins

我有一个UserControl,其中有一个FormView

表单视图只有一个InsertItemTemplate(我不需要其他任何东西)

在调用者(页面)中,我有类似的内容(我将数据源传递给UC,并从后面的代码中设置FormView的数据源。这没有问题):


自定义字段:
我的问题是;当我点击链接按钮并回发时,自定义内容(即我放在模板字段中的内容)将消失

如果将asp:占位符放置在FormView.InsertItemTemplate之外,则不会出现任何问题。然而,这不是我需要的

我需要InsertItemTemplate中的ITemplate即使在回发后也要保留。看起来我的模板被添加到了占位符的控件列表中,但是在PreRender和Render之间的某个地方,这些控件被删除了

有什么想法吗

谢谢
Nandun

我在某个时候修复了这个问题,所以我不完全记得解决方案(我急忙发布这个,试图帮助某人),我相信您在下面看到的类和属性属性解决了这个问题

[PersistChildren(true)]
public partial class EventControl : UserControl
{

    protected override void OnInit(EventArgs e)
    {
        if (CustomContent != null)
        {
            CustomContent.InstantiateIn(PlaceHolderCustomContent);
        }
        base.OnInit(e);
    }

    public string ComponentLabel { get; set; }

    public string ComponentValue { get; set; }


    [DefaultValue(null)]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    [TemplateContainer(typeof(Irt.Web.ServerControls.PlaceHolder), System.ComponentModel.BindingDirection.TwoWay)]
    [TemplateInstance(TemplateInstance.Single)]
    [Browsable(false)]
    [Bindable(true, BindingDirection.TwoWay)]
    public ITemplate CustomContent
    { 
        get; 
        set; 
    }

}
请注意,Irt.Web.ServerControls.PlaceHolder只是从System.Web.UI.WebControls.PlaceHolder控件派生的类。如果这解决了问题,请标记此项

[PersistChildren(true)]
public partial class EventControl : UserControl
{

    protected override void OnInit(EventArgs e)
    {
        if (CustomContent != null)
        {
            CustomContent.InstantiateIn(PlaceHolderCustomContent);
        }
        base.OnInit(e);
    }

    public string ComponentLabel { get; set; }

    public string ComponentValue { get; set; }


    [DefaultValue(null)]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    [TemplateContainer(typeof(Irt.Web.ServerControls.PlaceHolder), System.ComponentModel.BindingDirection.TwoWay)]
    [TemplateInstance(TemplateInstance.Single)]
    [Browsable(false)]
    [Bindable(true, BindingDirection.TwoWay)]
    public ITemplate CustomContent
    { 
        get; 
        set; 
    }

}

你解决了这个问题吗?怎么解决的?我遇到了完全相同的问题。JasonHi@JasonV我解决了这个问题,但我一辈子都记不清我到底做了什么。我从满是灰尘的架子上拿出代码,仔细检查了一遍,我认为是一些类和属性属性最终解决了这个问题。我会把它作为答案放进去,如果它对你有效,请把它标记为答案。
<irt:EventControl ID="EventControl" runat="server" DataSourceID="SqlDataSourceIocEvents">   
    <CustomContent>

        Custom Field: 
        <asp:TextBox ID="TextBoxCustomField" runat="server" Text='<%# Bind("CustomField") %>' />

    </CustomContent>
</irt:EventControl>     
[PersistChildren(true)]
public partial class EventControl : UserControl
{

    protected override void OnInit(EventArgs e)
    {
        if (CustomContent != null)
        {
            CustomContent.InstantiateIn(PlaceHolderCustomContent);
        }
        base.OnInit(e);
    }

    public string ComponentLabel { get; set; }

    public string ComponentValue { get; set; }


    [DefaultValue(null)]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    [TemplateContainer(typeof(Irt.Web.ServerControls.PlaceHolder), System.ComponentModel.BindingDirection.TwoWay)]
    [TemplateInstance(TemplateInstance.Single)]
    [Browsable(false)]
    [Bindable(true, BindingDirection.TwoWay)]
    public ITemplate CustomContent
    { 
        get; 
        set; 
    }

}