Я пытаюсь получить идентификатор div в коде позади (C#) и установить на нем некоторый css. Могу ли я получить его из DOM или мне нужно использовать какой-то контроль?
<div id = "formSpinner">
<img src = "images/spinner.gif" />
<p>Saving...</p>
</div>
Джон - отредактируйте свой вопрос, чтобы добавить код, который вы вставляете в отделенный код, и ГДЕ вы его помещаете, или подумайте об открытии нового вопроса для решения дальнейшей проблемы. :)
Замечание для всех, кто делает этот точный пример: ознакомьтесь с элементами управления UpdatePanel и UpdateProgress.





Добавьте к тегу атрибут runat = "server", после чего вы сможете ссылаться на него из внутреннего кода.
Убедитесь, что ваш div установлен на runat = "server", затем просто укажите на него ссылку в коде программной части и установите атрибут "class".
<div runat = "server" id = "formSpinner">
...content...
</div>
Код программной части
formSpinner.Attributes["class"] = "class-name";
Добавьте runat к элементу в разметке
<div id = "formSpinner" runat = "server">
<img src = "images/spinner.gif">
<p>Saving...</p>
</div
Затем вы можете перейти к атрибутам класса элемента управления, используя formSpinner.Attributes ("класс") Это будет всего лишь строка, но вы сможете ее редактировать.
Добавьте к нему атрибут runat = "server", чтобы у вас было:
<div id = "formSpinner" runat = "server">
<img src = "images/spinner.gif">
<p>Saving...</p>
</div>
Таким образом, вы можете получить доступ к атрибуту класса, используя:
formSpinner.Attributes["class"] = "classOfYourChoice";
Также стоит упомянуть, что элемент управления asp:Panel фактически является синонимом (по крайней мере, в том, что касается визуализированной разметки) с div, поэтому вы также можете:
<asp:Panel id = "formSpinner" runat = "server">
<img src = "images/spinner.gif">
<p>Saving...</p>
</asp:Panel>
Что затем позволяет вам писать:
formSpinner.CssClass = "classOfYourChoice";
Это дает вам более определенный доступ к собственности, и есть другие, которые могут или не могут быть вам полезны.
вы можете добавить CSS, например formSpinner.Attributes.add ("style", "display: none")
Этот вопрос меня нервирует. Это указывает на то, что, возможно, вы не понимаете, как использование серверного кода повлияет на состояние DOM вашей страницы.
Всякий раз, когда вы запускаете код на стороне сервера, вся страница перестраивается с нуля. Это имеет несколько последствий:
Если вам это сойдет с рук, вы можете передать это в javascript и избежать обратной передачи. Возможно, используйте вызов XmlHttpRequest () для запуска любого действия на стороне сервера, которое вам нужно.
Если все, что вы хотите сделать, это условно показать или скрыть <div>, вы можете объявить его как <asp: panel> (отображает в html как тег div) и установить для него свойство .Visible.
Как это сделать без runat = "server"? Например, если у вас есть
<body runat = "server" id = "body1">
... и попробуйте обновить его из Updatepanel, он никогда не будет обновлен.
Однако, если вы сохраните его как обычный не серверный элемент управления HTML, вы сможете. Вот JQuery для его обновления:
$("#body1").addClass('modalBackground');
Но как вы это делаете в коде?
Если вы не хотите запускать управляющий сервер на случай, если вам нужен идентификатор или просто не хотите добавлять его в состояние просмотра,
<div id = "formSpinner" class = "<%= _css %>">
</div>
в бэкэнде:
protected string _css = "modalBackground";
Чтобы подробнее рассказать о сообщении Peri и о том, почему мы можем не захотеть использовать viewstate, следующий код:
style = "<%= _myCSS %>"Protected _myCSS As String = "display: none"
Это подход, на который следует обратить внимание, если вы используете AJAX, он позволяет управлять отображением с помощью внутреннего кода asp.net, а не jquery / jscript.
Добавление runat = "server" устранило половину моей проблемы. Теперь я могу ссылаться на него в своем коде. Однако я не могу установить класс или стиль css. Я пытаюсь отобразить: блокировать или отобразить: нет.