繁体   English   中英

如何处理自定义ITemplate控件中按钮的Click事件?

[英]How to handle the Click event of a button in a custom ITemplate control?

我已经在ASP.NET中创建了一个自定义控件,用于显示弹出消息框。 在我的MessageBox类中,我有一个Content属性,如ITemplate,如下所示:

[PersistenceMode(PersistenceMode.InnerProperty)]
    [TemplateContainer(typeof(MessageBoxContent))]
    [TemplateInstance(TemplateInstance.Single)]
    public ITemplate Content { get; set; }

我在页面中使用了自定义控件,如下所示:

<cc1:MessageBox ID="MessageBox1" runat="server">
    <Content>
        <asp:Button Text="Save" runat="server" ID="B_Save" />
    </Content>
</cc1:MessageBox>

即使将Content属性的TemplateInstance设置为Single,我仍然无法访问Button控件。

我要做的就是处理按钮的click事件。 当我将事件处理程序分配给按钮控件并运行项目时,它将引发NullReferenceException。 有没有办法解决这个问题?

我在创建的自定义控件中遇到了类似的问题。

我想在Itemplate模板属性中找到一个LinkBut​​ton并将一个Click Event分配给它。

我在OnInit中实例化了模板,并在OnLoad中分配了click事件。

我在OnLoad中找到了LinkBut​​ton,没问题。 我还能够添加Click事件,这些事件似乎都还不错,直到尝试单击LinkBut​​ton时,Click事件都没有触发。

对我来说,解决方法是使我的自定义控件实现INamingContainer

这取决于您何时调用模板实例化。

您可以在容器的Load事件期间执行此操作,然后只需调用ITemplate.InstantiateIn方法即可访问注入模板的控件。

如果您无权访问该控件,则可能是您正在寻找错误的控件层次结构级别。 也许您将其嵌套在错误的位置?

您能给我们一部分源代码吗? 这可能是不错的,看看你实例化你的控制模板以后,您尝试添加一个Click事件处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM