簡體   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