Подтвердить что ты не робот

Программно Создание полей field, ol/ul и li в ASP.Net, С#

Мне нужно написать форму ASP.Net, которая создаст следующий HTML:

<fieldset>   
<legend>Contact Details</legend>   
<ol>   
<li>   
<label for="name">Name:</label>   
<input id="name" name="name" class="text" type="text" />   
</li>   
<li>   
<label for="email">Email address:</label>   
<input id="email" name="email" class="text" type="text" />   
</li>   
<li>   
<label for="phone">Telephone:</label>   
<input id="phone" name="phone" class="text" type="text" />   
</li>   
</ol>   
</fieldset>  

Однако поля, которые должны быть добавлены в форму, будут определены во время выполнения, поэтому мне нужно создать набор полей во время выполнения и добавить упорядоченный список и listitems к нему, с метками, текстовыми полями, флажками и т.д., если это необходимо.

Я не могу найти стандартные объекты ASP.Net, которые создадут эти теги.

Например, Id хотел бы сделать что-то вроде следующего в С#:

FieldSet myFieldSet = new FieldSet();
myFieldSet.Legend = "Contact Details";
OrderedList myOrderedList = new OrderedList();

ListItem listItem1 = new ListItem();
ListItem listItem2 = new ListItem();
ListItem listItem3 = new ListItem();

// code here which would add labels and textboxes to the ListItems

myOrderedList.Controls.Add(listItem1);
myOrderedList.Controls.Add(listItem2);
myOrderedList.Controls.Add(listItem3);

myFieldSet.Controls.Add(myOrderedList);

Form1.Controls.Add(myFieldSet);

Существуют ли какие-либо стандартные объекты ASP.Net, которые могут это сделать, или есть ли другой способ достижения одного и того же результата?

Matt

4b9b3361

Ответ 1

Вы можете попробовать следующее:

Panel myFieldSet = new Panel();
myFieldSet.GroupingText= "Contact Details";
HtmlGenericControl myOrderedList = new HtmlGenericControl("ol");

HtmlGenericControl listItem1 = new HtmlGenericControl ("li");
HtmlGenericControl listItem2 = new HtmlGenericControl ("li");
HtmlGenericControl listItem3 = new HtmlGenericControl ("li");

// code here which would add labels and textboxes to the ListItems

myOrderedList.Controls.Add(listItem1);
myOrderedList.Controls.Add(listItem2);
myOrderedList.Controls.Add(listItem3);

myFieldSet.Controls.Add(myOrderedList);

Form1.Controls.Add(myFieldSet);

Ответ 2

В приведенном выше ответе у меня был экземпляр, в котором массив оказался полезным, как показано здесь. Примечание. Я создал неупорядоченный список в коде aspx с id = "ulNoTree".

int NumFloorsCt = 10;
LinkButton[] rgBL;
HtmlGenericControl[] rgLI;

/// <summary>
/// set up an array of LinkButtons with "li" controls
/// - each LinkButton click is handled by the same event handler
/// </summary>
void SetUpLinkButtons(List<FLOOR> listFloorRecs)
{
  NumFloorsCt = 10;
  rgBL = new LinkButton[NumFloorsCt];
  rgLI = new HtmlGenericControl[NumFloorsCt];

  for (int i = 0; i < NumFloorsCt; i++)
  {
    rgBL[i] = new LinkButton();
    rgBL[i].ID = LB_ID_prefix + listFloorRecs[i].ID;
    rgBL[i].Click += new System.EventHandler(LB_fp_Click);
    rgBL[i].Text = listFloorRecs[i].DESCRIP;
    rgBL[i].ToolTip = "Click here to display floor info";

    rgLI[i] = new HtmlGenericControl("li");
    rgLI[i].Controls.Add(rgBL[i]);

    ulNoTree.Controls.Add(rgLI[i]);
  }
}

/// <summary>
/// event handler for any of the link buttons
/// </summary>
protected void LB_fp_Click(object sender, EventArgs e)
{
  LinkButton btn = (LinkButton)(sender);
  // do your action here
}