Подтвердить что ты не робот

Как отредактировать CSS-стиль div с помощью С# в .NET.

Я пытаюсь захватить идентификатор div в коде позади (С#) и установить на нем некоторый css. Могу ли я взять его из DOM или мне нужно использовать какой-то контроль?

<div id="formSpinner">
    <img src="images/spinner.gif" />
    <p>Saving...</p>
</div>
4b9b3361

Ответ 1

Добавьте к нему атрибут 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";

Это дает вам более определенный доступ к свойству, и есть другие, которые могут или не могут быть вам полезны.

Ответ 2

Убедитесь, что ваш div установлен в runat = "server", а затем просто ссылается на него в коде и устанавливает атрибут class.

<div runat="server" id="formSpinner">
   ...content...
</div>

Code-за

formSpinner.Attributes["class"] = "class-name";

Ответ 3

Этот вопрос заставляет меня нервничать. Это указывает на то, что, возможно, вы не понимаете, как использование кода на стороне сервера повлияет на состояние страницы DOM.

Всякий раз, когда вы запускаете код на стороне сервера, вся страница перестраивается с нуля. Это имеет несколько последствий:

  • Форма отправляется от клиента на веб-сервер. Это касается самых медленных действий, которые может выполнять веб-браузер, особенно в ASP.Net, где форма может дополняться дополнительными полями (то есть: ViewState). Выполнение этого слишком часто для тривиальных действий заставит ваше приложение выглядеть вялым, даже если все остальное будет приятным и быстрым.
  • Он добавляет нагрузку на ваш сервер с точки зрения пропускной способности (вверх и вниз по потоку) и процессора/памяти. Все, что требуется для восстановления вашей страницы, должно повториться. Если на странице есть динамические элементы управления, не забудьте их создать.
  • Все, что вы сделали с DOM, так как последний запрос потерян, если вы не забудете сделать это снова для этого запроса. Ваша страница DOM reset.

Если вам это удастся, вы можете нажать это на javascript и избежать обратной передачи. Возможно, используйте вызов XmlHttpRequest() для запуска любого действия на стороне сервера, которое вам нужно.

Ответ 4

Добавьте атрибут runat = "server" к тегу, затем вы можете ссылаться на него с помощью кода.

Ответ 5

Добавьте runat в элемент разметки

<div id="formSpinner" runat="server">
    <img src="images/spinner.gif">
    <p>Saving...</p>
</div

Затем вы можете перейти к атрибутам класса управления, используя formSpinner.Attributes( "класс" ) Это будет только строка, но вы сможете ее редактировать.

Ответ 6

Как вы это делаете без runat = "server"? Например, если у вас есть

<body runat="server" id="body1">

... и попробуйте обновить его из Updatepanel, он никогда не будет обновлен.

Однако, если вы сохраните его как обычный не-серверный HTML-контроль, вы можете. Здесь JQuery обновит его:

$("#body1").addClass('modalBackground');

Как вы это делаете в Codebehind?

Ответ 7

Если вы не хотите создавать свой собственный сервер runat на тот случай, если вам нужен идентификатор или просто не хотите добавлять его в viewstate,

<div id="formSpinner" class="<%= _css %>">
</div>

в фоновом режиме:

protected string _css = "modalBackground";

Ответ 8

Если все, что вы хотите сделать, это условно показать или скрыть <div> , тогда вы можете объявить его как < asp: panel > (отображает html как тег div) и установить его. Свойство Vibible.

Ответ 9

Чтобы перейти на пост Peri и почему мы не можем использовать viewstate в следующем коде:

style="<%= _myCSS %>"

Protected _myCSS As String = "display: none"
Подходит ли подход к использованию, если вы используете AJAX, он позволяет манипулировать дисплеем с помощью кода back-end asp.net, а не jquery/jscript.