Как создать HTML выбор в коде за C#?
Нам нужно динамически создавать выпадающий список html. Ниже приведен наш текущий код. Option1 и Option2 являются строками, которые включают все элементы. Причина, по которой у нас две строки, состоит в том, что мы разделяем все элементы на две группы.
<td>
<div id="dvGroup" style="display:none;" runat="server"></div>
</td>
string Option1 = "<optgroup label='Group1'><option>1</option><option1>2</option>";
string Option2 = "<optgroup label='Group2'><option>a</option><option>b</option><option>c</option>;
…
dvGroup.InnerHtml = "<Select name='ddGroup' id='ddGroup'>" + Option1 + Option2 + "</Select>";
Но установка InnerHtml потенциально может вызвать проблемы с безопасностью. Поэтому я изменил это на:
HtmlSelect select = new HtmlSelect();
select.ID = "ddGroup";
select.Name = "ddGroup";
select.ClientIDMode = ClientIDMode.Static;
dvGroup.Controls.Add(select);
select.Controls.Add(new LiteralControl(Option1 + Option2));
Тем не менее, он выдал следующую ошибку в строке select.Controls.Add…
'System.Web.UI.HtmlControls.HtmlSelect' does not allow child controls.
Как это исправить? Другая проблема заключается в том, что если для ClientIDMode задано значение Static, убедитесь, что идентификатор не изменился, а имя все еще добавляется. Как мне убедиться, что имя не изменилось?
1 ответ
Вы можете сделать это так:
HtmlSelect mHtmlSelect = new HtmlSelect();
mHtmlSelect.ID = "ddGroup";
mHtmlSelect.Name = "ddGroup";
mHtmlSelect.ClientIDMode = ClientIDMode.Static;
String Option1 = "Hello";
String Option2 = "World";
mHtmlSelect.Items.Add(new ListItem(Option1 + Option2));
this.Controls.Add(mHtmlSelect);
Выход:
<select name="ddGroup" id="ddGroup">
<option value="HelloWorld">HelloWorld</option>
</select>