[英]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是一个自定义类,该类继承LinkButton并实现一些自定义接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.