2014-06-20 23 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访问属性。