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

Я использую мастер-страницы и стараюсь динамически добавлять скрытые текстовые поля в форму с ИМЕНАМИ, которых ожидает 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 ]

1 голос
/ 24 февраля 2011

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 .

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)
0 голосов
/ 22 февраля 2011

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

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