在default.aspx
上我有以下隐藏字段:
<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 :(得分: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
的属性。
答案 1 :(得分: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);
}