2009-06-04 53 views
3

我會解釋我想達到什麼樣的效果:如何在ASP.NET中動態創建新的超鏈接?

我想要一個能夠創建儘可能多的控件的情況,只需在後面的代碼中創建一個循環。通過混合PHP代碼和HTML代碼,我可以在使用PHP時做到這一點。這使我可以動態生成實際的HTML標籤。

在ASP.NET中,我還沒有找到一種方法來複制此功能。我想過在Init()函數之類的代碼中使用循環來創建new()對象的數組,並設置它們的屬性並希望它傳遞到aspx文件,但它沒有沒有工作。

我該怎麼做?

回答

9

如果你想創造動態ASP.Net超鏈接控制 你可以簡單地這樣做:

HyperLink hyp = new HyperLink(); 
    hyp.ID = "hypABD"; 
    hyp.NavigateUrl = ""; 
    Page.Controls.Add(hyp); 
4

嗯,記住有一個在ASP.Net超鏈接和了LinkBut​​ton之間的差異

如果你只是想超鏈接,你可以通過創建一個超鏈接對象,創建新的對象,然後將創建只要你想盡可能多的他們到一些控制的控制集合,如面板或跨度或其他東西。

LinkBut​​tons有點不同。如果要創建回發到服務器的鏈接,則必須使用Repeater控件。 (好吧,你不需要,但替代方案是一個黑客工作。)

超鏈接也可以通過使用Repeater控件創建,如果可能的話,我會推薦的方法。

4

很多方法在asp.net做到這一點

  1. 如果你真的想,你可以直接使用<% %>標籤進入ASPX標記,就像PHP或放環經典的asp。推薦使用而不是
  2. 您可以在表單上放置佔位符或面板控件,根據需要在代碼中創建儘可能多的超鏈接控件或錨點標籤,並將它們添加到佔位符的控件集合中。這有點更好,但仍然不是最佳的。
  3. 您可以在頁面上放置合理數量的超鏈接控件,默認將它們的visible屬性設置爲false,並「啓用」您需要的。由於asp.net頁面生命週期存在一些不合理之處,所以這是首選#2。
  4. 這些鏈接來自某處,那地方通常是一個數據庫或其他數據源合理。因此,使數據驅動—將該數據源綁定到像中繼器,網格視圖,細節視圖或類似的控件。這可能是你最好的選擇。
4

如果你想生成控件動態&並不需要有那些回發到服務器(即在單擊控件時/改變,它會回到同一頁) - 您可以使用控件System.Web.UI.HtmlControls命名空間。

例如

HtmlAnchor link = new HtmlAnchor(); 
link.href = "www.stackoverflow.com"; 
Page.Controls.Add(link);

希望這給你足夠的背景。

編輯:你可以在循環中使用上面的代碼&用來自數據庫/對象的內容替換固定值。