Как редактировать CSS стиль div с использованием C # в .NET - PullRequest
46 голосов
/ 06 октября 2008

Я пытаюсь получить идентификатор div в коде (C #) и установить некоторые CSS Могу ли я взять его из DOM или мне нужно использовать какой-нибудь элемент управления?

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

Ответы [ 9 ]

75 голосов
/ 06 октября 2008

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

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

13 голосов
/ 06 октября 2008

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

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

Код-за

formSpinner.Attributes["class"] = "class-name";
6 голосов
/ 06 октября 2008

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

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

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

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

3 голосов
/ 27 февраля 2011

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

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

в конце:

protected string _css = "modalBackground";
3 голосов
/ 15 февраля 2011

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

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

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

Однако, если вы сохраните его как обычный несерверный элемент управления HTML, вы можете. Вот Jquery, чтобы обновить его:

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

Как вы делаете это в коде позади?

3 голосов
/ 06 октября 2008

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

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

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

3 голосов
/ 06 октября 2008

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

1 голос
/ 16 января 2013

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

style="<%= _myCSS %>"

Protected _myCSS As String = "display: none"
Если вы используете AJAX, это подход, позволяющий манипулировать отображением с помощью внутреннего кода asp.net, а не jquery / jscript.

1 голос
/ 07 октября 2008

Если все, что вы хотите сделать, это условно показать или скрыть

, то вы можете объявить его как (выводит html как тег div) и установить его свойство .Visible.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...