在使用母版页时,如何为标记分配特定的名称?

时间:2010-03-01 05:04:42

标签: asp.net vb.net master-pages google-checkout

我正在使用母版页,我正在使用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_”&amp; count.ToString),并尝试将名称添加到“属性”列表中。这奇怪地对name属性没有任何影响。当我不使用母版页时,我注意到当我设置ID属性时,NAME会自动分配相同的值。

在使用母版页时,有没有办法控制动态添加的控件的名称?

2 个答案:

答案 0 :(得分:1)

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)

请参阅Making text box hidden in ASP.NETHiddenField Class

{。{1}}是在.Net Framework 4.0中引入的 对于早期版本,替代方案可能是添加ClientIDMode

asp:Literal

答案 1 :(得分:0)

不幸的是,简单的答案是否定的。更难的答案是肯定的,但不是直截了当的。解决方法不是尝试设置属性,而是将名称定义为属性:

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