1

我想从后面的代码中为 ASP.NET 的 HiddenField 控件设置“名称”属性,但我找不到“属性”属性。它不是有目的的吗?如何添加属性?

谢谢

4

5 回答 5

6

该属性是根据隐藏字段的ID属性及其在命名容器链中的祖先name自动计算的。你不能自己设置。您只能通过控件的UniqueID访问它。

于 2010-11-05T09:13:33.797 回答
4

一个可能的解决方案,在不了解您的代码的情况下,通过将 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" />
于 2010-11-05T09:25:34.907 回答
2

另一种非正统的处理方法是在客户端设置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" />
于 2014-01-25T19:37:30.323 回答
0

忘掉 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");
于 2012-09-12T09:40:46.670 回答
0

我最终这样做的方式是ClientIDMode="Static"在 HiddenField 上进行设置,然后将 ID 设置为我想要的名字。

我最终得到了丑陋的 ID,但要让它发挥作用,这是一个很小的代价。

于 2015-07-09T01:45:05.610 回答