Как установить атрибут имени для HiddenField управления на стороне сервера?
Я хочу установить атрибут "name" для элемента управления HiddenField ASP.NET из кода, но не могу найти свойство "Attributes". Разве это не для цели? Как мне добавить атрибут?
Спасибо
5 ответов
name
Атрибут автоматически вычисляется из свойств идентификатора скрытого поля и его предков в цепочке именования контейнеров. Вы не можете установить это самостоятельно. Вы можете получить к нему доступ только через уникальный идентификатор элемента управления.
Возможное решение, не зная немного больше о вашем коде, состоит в том, чтобы использовать элемент управления Html на стороне сервера, а не веб-элемент управления ASP.NET, добавив атрибут runat="server" в разметку Html:
<input type="hidden" id="myHiddenField" runat="server" />
Затем вы можете динамически указывать идентификатор в коде позади во время выполнения, из которого выводится атрибут 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, дайте ему имя (идентификатор), сделайте его невидимым и сохраните в нем свой текст:
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, а затем установите идентификатор, который я хочу, чтобы мое имя было.
Я получил ужасные документы, но это была небольшая цена, чтобы заставить это работать.