2
在ASP.NET 4.0中,是否可以有一個函數返回一個服務器控件,並且能夠通過內聯代碼調用該函數,該代碼將服務器端控件放置在呈現的HTML?在標記中使用函數返回的服務器控件
注:以下是VB.NET,但很容易被C#等
例如,說我有一個功能...
Public Function GetImageButton(ByVal id As String) As ImageButton
Dim btn As New ImageButton
btn.ID = id
AddHandler btn.Click, AddressOf btn_Click
Return btn
End Function
我想有在標記是類似於以下內容...
<div><%=GetImageButton("btn1")%></div>
這將服務器控件定位在HTML中的該特定位置,但保留作爲一個標準的ASP.NET控件,與事件處理等
然而,上述顯然會造成以下的被渲染爲文字...
<div>System.Web.UI.WebControls.ImageButton</div>
我的假設是,這是不可能的並且有必要擁有類似<asp:PlaceHolder>
控件的控件,該控件通過代碼隱藏進行填充。
更新
我有一個臨時的解決方案,我已經提供了一個答案的問題。
我仍然會聽到任何其他建議很感興趣/解決方案
這是否真的不會在佔位符之前輸出控件的'.ToString()'文本?即使在源代碼中,如果它沒有被顯示在瀏覽器中?我有點驚訝它的作品,但如果它確實,那麼偉大:) – Rob
@Rob - 如果它是一個函數,並且您使用了'<%= %>'那麼是的,它會 – freefaller
Ack - 儘管您已經讓我注意到當我從問題中複製函數並將其轉換爲「Sub」時出現錯字。它不應該有返回類型,因爲這顯然是無效的語法 – freefaller