我想从后面的代码中为 ASP.NET 的 HiddenField 控件设置“名称”属性,但我找不到“属性”属性。它不是有目的的吗?如何添加属性?
谢谢
该属性是根据隐藏字段的ID属性及其在命名容器链中的祖先name
自动计算的。你不能自己设置。您只能通过控件的UniqueID访问它。
一个可能的解决方案,在不了解您的代码的情况下,通过将 runat="server" 属性添加到 Html 标记来使用服务器端 Html 控件而不是 ASP.NET Web 控件:
<input type="hidden" id="myHiddenField" runat="server" />
然后,您可以在运行时在后面的代码中动态指定 id,从中推断出 name 属性:
myHiddenField.ID = "CodebehindName";
myHiddenField.Value = "myValue";
这将导致以下输出:
<input name="CodebehindName" type="hidden" id="CodebehindName" value="myValue" />
另一种非正统的处理方法是在客户端设置name属性。如果您要向第三方(例如 PayPal)发布信息,这将非常有用。
jQuery EG:
<script type="text/javascript">
$(function () {
$('#BusinessHid').prop('name', 'business')
$('#CurrencyHid').prop('name', 'currency_code')
$('#InvoiceHid').prop('name', 'invoice')
$('#AmountHid').prop('name', 'amount')
})
</script>
<asp:HiddenField ID="BusinessHid" runat="server" ClientIDMode="Static" />
<asp:HiddenField ID="CurrencyHid" runat="server" ClientIDMode="Static" />
<asp:HiddenField ID="InvoiceHid" runat="server" ClientIDMode="Static" />
<asp:HiddenField ID="AmountHid" runat="server" ClientIDMode="Static" />
忘掉 HiddenField 控件,改用 Label,给它一个名字(一个 id),让它不可见,然后把你的文本存进去:
label = new System.Web.UI.WebControls.Label() {
Text = "Here my hidden text",
};
label.Attributes.Add("id", "MyHiddenFieldID");
label.Attributes.Add("style", "display:none;");
myParentControl.Controls.Add(label);
使用以下命令在 javascript 中获取隐藏字段:
var myHiddenField = document.getElementById("MyHiddenFieldID");
我最终这样做的方式是ClientIDMode="Static"
在 HiddenField 上进行设置,然后将 ID 设置为我想要的名字。
我最终得到了丑陋的 ID,但要让它发挥作用,这是一个很小的代价。