[英]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.