繁体   English   中英

ASP.Net:程序化runat =“ server”并单击

[英]ASP.Net: Programatic runat=“server” and onclick

我正在尝试编辑没有.ascx页的控件,它完全是用代码完成的。 我试图添加一个可选的委托,以从以前在客户端完全处理过的ImageButton中调用。 所以我想设置runat =“ server”。 但是,我看不到该属性以编程方式在对象上公开!

如果使用代码创建,则它隐式为runat="server" ,无需指定。

服务器控件会自动在服务器上运行,因此我假设您需要帮助将所有这些联系在一起。

如果您能够修改控件,则可以添加一个行为,该事件的行为类似于普通事件,但调用一个委托。 抱歉,我不熟悉确切的C#语法,因此我将展示VB。 在控件中:

Public ParentDelegateEvent As System.Delegate

Public Sub btnDelegateClick(ByVal sender As Object, ByVal e As EventArgs) Handles btnDelegate.Click

    Dim args(1) As Object
    args(0) = sender
    args(1) = e
    ParentDelegateEvent.DynamicInvoke(args)

End Sub

然后在具有此控件的页面中,在PageLoad事件中设置委托:

Dim delMyEvent As New DelegatePostBack(AddressOf MyPageEventHandler)
MyControl.ParentDelegateEvent = delMyEvent

MyPageEventHandler像其他任何东西一样在页面上定义:

Private Sub MyPageEventHandler(ByVal sender As Object, ByVal e As EventArgs)

End Sub

也许这会有所帮助。 我有一个自定义控件(所有代码均与您一样),可以执行以下操作来添加点击:

myLinkCtrl = new myLinkControlClass();
myLinkCtrl.Click += myEventName;
myLink.PostBackUrl = myTargetURL;
myLink.Attributes.Add([add some attributes here like target, etc.]);
etc..

myLinkControlClass是一个自定义类,该类继承LinkBut​​ton并实现一些自定义接口。

暂无
暂无

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

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