Как установить атрибут имени для HiddenField управления на стороне сервера? - PullRequest
1 голос
/ 05 ноября 2010

Я хочу установить атрибут «name» для элемента управления HiddenField в ASP.NET из кода, но не могу найти свойство «Attributes». Разве это не для цели? Как добавить атрибут?

спасибо

Ответы [ 5 ]

6 голосов
/ 05 ноября 2010

Атрибут name автоматически вычисляется из свойств ID скрытого поля и его предков в цепочке именования контейнеров .Вы не можете установить это самостоятельно.Вы можете получить к нему доступ только через UniqueID элемента управления.

3 голосов
/ 05 ноября 2010

Возможное решение, не зная немного больше о вашем коде, состоит в том, чтобы использовать серверный элемент управления Html, а не веб-элемент управления ASP.NET, добавив атрибут runat = "server" в разметку HTML:

<input type="hidden" id="myHiddenField" runat="server" />

Затем вы можете динамически указывать идентификатор в коде позади во время выполнения, из которого выводится атрибут имени:

myHiddenField.ID = "CodebehindName";
myHiddenField.Value = "myValue";

Это приведет к следующему выводу:

<input name="CodebehindName" type="hidden" id="CodebehindName" value="myValue" />
2 голосов
/ 25 января 2014

Другим неортодоксальным методом для решения этой проблемы является установка атрибута 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" />
0 голосов
/ 09 июля 2015

Я закончил тем, что сделал это, установив ClientIDMode="Static" на HiddenField, а затем установил в качестве идентификатора то, что я хочу, чтобы мое имя было.

В итоге я получил уродливые идентификаторы, но это было небольшоецена, чтобы заплатить, чтобы заставить это работать.

0 голосов
/ 12 сентября 2012

Забудьте об элементе управления HiddenField и используйте вместо него метку, дайте ему имя (идентификатор), сделайте его невидимым и сохраните в нем свой текст:

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");
...