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