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