2011-11-04 65 views
0

我試圖在ASP.Net中創建一個。我現在有以下代碼:使用Response.Write()在ASP.NET中創建按鈕

   <b>Tags: 
       <% 
        List<string> tags = GetTags(); 
        foreach(string tag in tags) 
        { 
         Response.Write(tag + " "); 
        } 
       %> 
      <br/> 

但是,所有這些都是將文本打印到網頁上。我可以修改這個聲明來允許我用它創建按鈕嗎?或者我堅持只是文字?

+1

您不能以這種方式創建''。請詳細說明你的'List 是什麼,以及你希望看到什麼結果。 –

+0

我更新了帖子,使其更簡單。它只是一個字符串,是標籤的名稱。我希望按鈕將其用於「文本」屬性。 – user489041

回答

3

您不能以這種方式創建服務器端控件。只需在您的標記中聲明控件,就像您通常對任何html元素所做的那樣。例如:

<asp:button id="btnSubmitForm" runat="server" Text="Submit Form" /> 

如果你想要的是在你的標記上創建簡單的標籤;做這樣的事情:

<asp:ContentPlaceHolder id="tagPlaceHolder" runat="Server"> 
</asp:ContentPlaceHolder> 

和服務器端:

List<BrainStorm.Tags> tags = BrainStorm.PostRunner.GetTagsForPost((long)Double.Parse(hiddenField.Value)); 
foreach(BrainStorm.Tags tag in tags) 
{ 
    Button b = new Button(); 
    b.Text=tag.Title; 
    tagPlaceHolder.Controls.Add(b); 
} 

這將添加一個按鈕,你有你的ContentPlaceHolder

UPDATE內的每個標籤:

中繼器內...

protected void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
    ContentPlaceHolder placeHolder = ((ContentPlaceHolder)e.Item.FindControl("tagPlaceHolder")); 


    } 
}  
+0

太棒了,謝謝你的回覆。我現在正在嘗試。另一個愚蠢的問題。這是從中繼器內部運行的。我似乎無法從我的for循環訪問'tagPlaceHolder'控件。任何想法如何做? – user489041

+0

@ user489041:檢查我的更新。 – Icarus