Member 13980681 Ответов: 2

Получить скрытое значение в C#, заданное в javascript


У меня есть экран, который отображается, и в зависимости от некоторых ответов я динамически строю список переключателей и вычисляю его значения в javascript. Выбранное значение я сохраняю в скрытом поле. В C# значение скрытого поля всегда равно "".

Это вроде того, что у меня есть:
Мой HTML - показывает 3 параметра переключателей, значения которых выводятся во время выполнения в javascript на основе ответов, предоставленных на экране после загрузки страницы

<div class="testSection">
&ЛТ;как ASP:HiddenField идентификатор="hidAnswer" атрибут runat="сервер" /&ГТ;
&ЛТ;как ASP:HiddenField идентификатор="hidMin" атрибут runat="сервер" /&ГТ;
&ЛТ;как ASP:HiddenField идентификатор="hidMax" атрибут runat="сервер" /&ГТ;
<класс таблицы="testTable" >
<tbody>
<tr>
<td style="padding-left: 18px">
&ЛТ;АСП:метка идентификатор="lblPrompt" атрибут runat="server"и&ГТ;&ЛТ;/АСП:ярлык&ГТ;
</td>
</tr>
<tr>
&ЛТ;ООО " ТД " идентификатор="rbtNoLapse"&ГТ;
<div id="dvnTest1" title="rbTest1" >
&ЛТ;ИД входного="rbtNo" тип="радио" имя="ошибка" /&ГТ;
&ЛТ;меткой ID="LblNo" для="rbtNo" &ГТ;&ЛТ;/ярлык&ГТ;
</div>
<div id="dvMin" title="rbTest1" >
&ЛТ;ИД входного="rbtMin" тип="радио" имя="ошибка" /&ГТ;
&ЛТ;метку ID="LblMin" для="rbtMin" &ГТ;&ЛТ;/ярлык&ГТ;
</div>
<div id="dvMax" title="rbTest1" >
&ЛТ;ИД входного="rbtMax" тип="радио" имя="ошибка" /&ГТ;
&ЛТ;меткой ID="LblMax" для="rbtMax" &ГТ;&ЛТ;/ярлык&ГТ;
</div>
</td>
</tr>
</tbody>
</Таблица>
</div>

В javascript при проверке выбора я получаю выбранный элемент. Предупреждение показывает правильно выбранный элемент в скрытом поле hidAnswer.

список ВАР = документ.метода getElementById("rbtNoLapse");
ВАР входов = список.метод getelementsbytagname("ввод");
ВАР выбранный;


для (var i = 0; i < входы.длина; i++)
{
если (входы[я].проверено)
{
selected = входные данные[i];
перерыв;
}
}
если (выбрано)
{
hidAnswer = selected.value;
}
оповещения( hidAnswer);




в C#, получая значения из формы, для обоих скрытых полей значение = "" - я не понимаю, почему они не имеют тех же значений, что отображаются в предупреждении в javascript.

if (hidMin.Value != "0")
{
if (hidAnswer.Value == "01")
{
сделать нечто
}

}


Я не могу найти сценарий simialr, на который я могу ссылаться - я искал повсюду.
Любая помощь будет оценена по достоинству.

Что я уже пробовал:

Я искал повсюду подобный сценарий, но не мог найти точно такой же, как мой. Я пробовал множество предложений, но ничего не работает. Я явно делаю что-то не так, у меня плохой синтаксис или я пытаюсь сделать что-то, что просто невозможно ! Любая помощь будет оценена по достоинству.

F-ES Sitecore

Я пошел на "с# asp.net установите значение скрытого поля" и нашел довольно много статей\вопросов, которые охватывают этот сценарий с кодом, который показывает, как вы обновляете скрытое поле

https://www.codeproject.com/Questions/445390/How-can-i-set-value-to-asp-hidden-field-using-java

Обратите внимание на бит "ClientID" в приведенном выше решении, вам может понадобиться это в зависимости от других вещей, таких как расположение элементов управления, если вы используете мастер-страницы и т. д.

2 Ответов

Рейтинг:
1

Richard Deeming

hidAnswer = selected.value;

Так и должно быть:
document.getElementById("hidAnswer").value = selected.value;

В данном случае вы просто присваиваете значение необъявленной локальной переменной.


Рейтинг:
1

Vincent Maverick Durano

HiddenField это Ан ASP.NET Server Control, поэтому вы не можете получить к ним доступ, напрямую ссылаясь на их идентификатор. Чтобы получить к ним доступ в JavaScript, вам нужно будет использовать эту функцию документ.метода getElementById и передайте ему идентификатор элемента управления.

Например:

document.getElementById('<%=hidAnswer.ClientID%>').value = 'set whatever value here';


Обратите внимание, что мы используем ClientID, вместо того чтобы ID из HiddenField, причина этого заключается в том, что ASP.NET будет отображаться другой идентификатор в разметке, особенно если ваш элемент управления вложен в a NamingContainer Таким образом, фактический идентификатор может выглядеть примерно так clt0_clt1_hidAnwser.

В .Сеть 4.х, ClientMode свойство было введено для того чтобы избежать отображения автоматически генерируемых идентификаторов см.: Контроль.Свойство ClientIDMode (System.Web.Пользовательский интерфейс) | Microsoft Docs[^]

Так что если вы установите ClientMode= "Static" для серверного элемента управления вы можете безопасно использовать что-то вроде этого для доступа к элементу управления:

document.getElementById('hidAnswer').value = 'set whatever value here';