2014-06-20 73 views
0

default.aspx我有以下的隱藏字段:分配HiddenField值編程

<asp:HiddenField runat="server" ID="icon1" /> 
<asp:HiddenField runat="server" ID="icon2" /> 
<asp:HiddenField runat="server" ID="icon3" /> 

正如你可以看到,該字段的名稱是每個時間,但增加1至3。

相同

在我後面的代碼我一直在做這個(if報表和其他代碼簡潔,刪除 - 這是它的肉):

icon1.Value = "Bonus1"; 
icon2.Value = "Bonus2"; 
icon3.Value = "Bonus3"; 

中號最後,我每次都這樣分配iconX.Value?我能在循環中一次性完成所有操作嗎(爲了簡潔起見,還要刪除其他所有內容)?

for (int i = 1; i <=3; i++) 
{ 
    icon(i).Value = "Bonus" + i.ToString(); 
} 

我讀過的一切都讓我相信在C#中這是不可能的。假設我有50 iconX.Value = whatever to assign。循環是最合乎邏輯的意義。可能?

回答

0

您必須在HTML部分創建一個asp:panel

然後,在c#代碼中,創建一個循環並創建像您所描述的元素。

當元素完全配置後,將其添加到面板。

.ASPX文件

<asp:Panel ID="panel_controls" runat="server"> </asp:Panel> 

C#代碼

for (int i = 1; i <= 3; i++) { 
    HiddenField myField = new HiddenField(); 
    myField.ID = "icon" + i; 
    myField.Value = "Bonus" + i; 
    panel_controls.Controls.Add(myField); 
} 
+0

打我吧:) –

2

環路使最邏輯意義。可能?

是的。使用頁面的FindControl方法,通過其ID查找控制:

for (int i = 1; i <= 3; i++) 
{ 
    HiddenField field = (HiddenField)this.FindControl("icon" + i); 
    field.Value = "Bonus" + i.ToString(); 
} 

注:由於FindControl返回類型爲Control,你必須按順序把結果具體到HiddenField訪問屬性。