#c# #javascript
#c# #javascript
Вопрос:
Итак, я несколько дней искал онлайн-решение этой проблемы, и я пробовал разные способы сделать это, но, похоже, не могу найти полного решения. Поэтому, пожалуйста, ПОМОГИТЕ!
У меня есть форма, которую пользователь заполняет онлайн. В какой-то момент формы они выбирают ключевые слова, которые они хотят связать со своими входными данными. Я создал табличный макет кнопок с каждым ключевым словом в кнопке.
<asp:Button
ID="button1"
Text="Kid Friendly"
CssClass="button_off"
runat="server"
onclientclick="change_select(this);"
OnClick="return false;" >
</asp:Button>
<br />
<asp:Button
ID="button2"
Text="Romantic"
CssClass="button_off"
runat="server"
onclientclick="change_select(this);"
OnClick="return false;" >
</asp:Button>
<br />
.. и так далее.
Кнопки имеют синий фон. Если пользователь нажимает на кнопку, он запускает javascript для изменения класса кнопки, что меняет фон на зеленый.
function change_select(objs)
{
var mydoc = objs.className;
if (mydoc == "button_off")
{
objs.className = "button_on";
document.getElementById("button1").setAttribute("SkinID", "3");
}
else
{
objs.className = "button_off";
}
}
Затем внизу у меня есть кнопка для отправки информации:
<asp:Button ID="button4" Text="Verify" runat="server" onclick="verify" >
Когда я тестирую страницу, нажатие на кнопки изменяет класс, а фоны меняются взад и вперед, но когда я пытаюсь захватить класс каждого элемента на стороне сервера, он всегда возвращается как «button_off».
protected void verify(object sender, EventArgs e)
{
var myValue = button1.CssClass.ToString();
string myInfo = "<h3>Your buttons</h3><p>Here is the class: " myValue;
myResults.InnerHtml = myInfo.ToString()
}
Как C # на стороне сервера может узнать, что пользователь изменил класс? Я пытался изменить их на элементы HTML, подходящие для детей, но я не мог понять, как ссылаться на элемент HTML на стороне сервера. Я нашел сообщения в областях с кодом для этого (ссылающимся на HTMLElement), но этот код никогда не работал на моей машине разработки.
Да, я мог бы просто сделать ключевые слова метками и добавить флажки рядом с каждым из них, но это так скучно; Я пытался создать здесь более интересный интерфейс. Пожалуйста, помогите!
Ответ №1:
Попробуйте сохранить класс css в скрытом поле при отправке.
Комментарии:
1. Когда страница будет отправлена обратно из-за события нажатия кнопки, элементы вернутся к своему обычному состоянию CssClass. Поэтому вы должны использовать что-то другое для хранения этого нового класса. Скрытое поле, как предложено, или файл cookie / сеанс / что угодно еще.
2. Да, я тоже об этом думал. Добавление скрытого поля для каждого элемента button и сохранение в нем значения, но это кажется большим количеством кода. Кто-то посоветовал мне посмотреть на виджет кнопок jquery, который делает флажки похожими на кнопки. Я думаю, что это, вероятно, будет моим ответом.