Как назначить определенное имя тегу при использовании главных страниц?

Я использую мастер-страницы и пытаюсь динамически добавлять скрытые текстовые поля в форму с ИМЕНАМИ, которых ожидает Google Checkout.

<input name="item_name_1" type="hidden" value="Widget #1"/>

Используя VB.NET, я выполняю следующий код

'Name
Dim hidName As New HtmlInputHidden
hidName.ID = "item_name_" & count.ToString
hidName.Value = item
Form.Controls.Add(hidName)

Но поскольку я использую мастер-страницы, элемент управления переименован в "ctl00$item_name_1".

<input name="ctl00$item_name_1" type="hidden" id="ctl00_item_name_1" 

Обратите внимание, что я попытался установить свойство Name (hidName.Name = "item_name_" & count.ToString), а также попытался добавить имя в список атрибутов. Как ни странно, это никак не повлияло на атрибут имени. Когда я не использую главные страницы, я замечаю, что, когда я устанавливаю свойство ID, NAME автоматически присваивается то же значение.

Есть ли способ управления именем динамически добавленного элемента управления при использовании главных страниц?

2 ответа

System.Web.UI.WebControls.Control имеет свойство под названием ClientIDMode,
Вместо HtmlInputHidden, вы можете использовать HiddenField,

 'Name
Dim hidName As New System.Web.UI.WebControls.HiddenField
hidName.ID = "item_name_" & count.ToString
hidName.ClientIDMode = System.Web.UI.ClientIDMode.Static
hidName.Value = item
Form.Controls.Add(hidName)

См. Создание текстового поля, скрытого в ASP.NET и HiddenField Class.

ClientIDMode был представлен в.Net Framework 4.0.
Для более ранних версий альтернативой может быть добавление asp:Literal,

 'Name
Dim hidName As New System.Web.UI.WebControls.Literal
hidName.Text = _
  String.Format("<input name=""item_name_{0}"" type=""hidden"" value=""{1}""/>", _
                count, item)
Form.Controls.Add(hidName)

К сожалению, простой ответ - нет. Более сложный ответ - да, но не простым способом. Обходной путь - не пытаться установить свойство, а вместо этого определить имя как атрибут:

Dim hidName As New HtmlInputHidden
hidName.Attributes("Name") = "item_name_" & count.ToString
hidName.Value = item
Form.Controls.Add(hidName)
Другие вопросы по тегам