0
我是ASP.NET新手,我有点迷路,不知道我是否正确。在回发后在代码隐藏中访问生成的htmlControls
在一个非常大的形式中,我使用很多输入字段来渲染几个表格。
在ASPX我有这样的:
<tbody runat="server" id="a2_tbody" ></tbody>
在代码隐藏我访问TBODY并呈现TR,运输署和投入使用这样的方法:
private void generateA2TableRows(int num_rows, HtmlGenericControl parent) {
for(int i=0; i<num_rows; i++){
string ctrlName = String.Empty;
TableRow tr = new TableRow();
TableCell c_designacao = new TableCell();
HtmlInputText i_designacao = new HtmlInputText("text");
ctrlName = "a2_designacao_" + i;
i_designacao.ID = ctrlName;
i_designacao.Name = ctrlName;
i_designacao.Attributes.Add("class", "validate[custom[blackList]]");
c_designacao.Controls.Add(i_designacao);
tr.Controls.Add(c_designacao);
TableCell c_ss = new TableCell();
HtmlSelect seg_social = new HtmlSelect();
ctrlName = "a2_seg_social_" + i;
seg_social.Items.Insert(0, "Selecione");
seg_social.SelectedIndex = 0;
seg_social.Items.Insert(1,"Sim");
seg_social.Items.Insert(2,"Não");
seg_social.ID = ctrlName;
seg_social.Name = ctrlName;
c_ss.Controls.Add(seg_social);
tr.Controls.Add(c_ss);
TableCell c_n_utentes = new TableCell();
HtmlInputText i_n_utentes = new HtmlInputText("text");
i_n_utentes.Attributes.Add("class", "validate[custom[onlyPositiveNumbers]]");
ctrlName = "a2_n_utentes_" + i;
i_n_utentes.ID = ctrlName;
i_n_utentes.Name = ctrlName;
c_n_utentes.Controls.Add(i_n_utentes);
tr.Controls.Add(c_n_utentes);
parent.Controls.Add(tr);
}
}
但现在我需要访问所有的输入来验证和其他处理。 我一直在尝试这种方式:
这一个只返回我写在aspx上的htmlControls。
foreach (Control ctrl in Form.Controls) {
if (ctrl is HtmlControl)
{
HtmlControl htmlCtrl = ctrl as HtmlControl;
Response.Write("ID: " + htmlCtrl.ID + " CLASS = " + htmlCtrl.Attributes["class"] +" type = "+ htmlCtrl.GetType() + "<br/>");
}
}
这样我得到了渲染的元素,但只有名称。 我试着重新构造元素的ID并使用FindControl方法,但“Form”不会以任何方式返回任何元素。
foreach (Object formObj in Request.Form) {
string formObjID = formObj.ToString().Replace("$", "_");
Control ctrl = Form.FindControl(formObjID);
}
任何人都可以从这一个脱下我吗? 主要目标只是访问呈现的元素,以便我可以验证它们并将数据序列化为XML,并且真的不知道这是否是正确的方法。
在此先感谢。
抱歉,但这是真的不是asp.net的正确方法。你可能首先需要一些教程,也许有数以千计的亨德尔。但好吧,为什么你不记得你的输入文本框,例如列表(文本框)或你的列表(HtmlInputText)(我不明白你为什么使用) – Luke 2011-02-27 23:42:17
gridview会做你想要的东西一个更简单的方法 – Luke 2011-02-27 23:43:47