[英]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模板属性中找到一个LinkButton并将一个Click Event分配给它。
我在OnInit中实例化了模板,并在OnLoad中分配了click事件。
我在OnLoad中找到了LinkButton,没问题。 我还能够添加Click事件,这些事件似乎都还不错,直到尝试单击LinkButton时,Click事件都没有触发。
对我来说,解决方法是使我的自定义控件实现INamingContainer 。
这取决于您何时调用模板实例化。
您可以在容器的Load事件期间执行此操作,然后只需调用ITemplate.InstantiateIn方法即可访问注入模板的控件。
如果您无权访问该控件,则可能是您正在寻找错误的控件层次结构级别。 也许您将其嵌套在错误的位置?
您能给我们一部分源代码吗? 这可能是不错的,看看你实例化你的控制模板以后,您尝试添加一个Click事件处理程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.