如何在.NET中使用C#编辑div的CSS样式

我想在后面的代码(C#)中获取一个div的ID,并设置一些CSS。 我可以从DOM中抓取它,还是必须使用某种控件?

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

runat="server"属性添加到它,以便您有:

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

这样,您可以使用以下方式访问类属性:

 formSpinner.Attributes["class"] = "classOfYourChoice"; 

另外值得一提的是, asp:Panel控件与div实际上是同义词(至less就渲染标记而言),所以你也可以这样做:

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

然后,你可以写:

 formSpinner.CssClass = "classOfYourChoice"; 

这给你更多的定义访问财产,也有其他人可能会或可能不会对你有用。

确保你的div被设置为runat =“server”,然后简单地在代码隐藏中引用它,并设置“class”属性。

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

代码隐藏

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

这个问题让我紧张。 它表明,也许你不明白如何使用服务器端代码会影响你的网页的DOM状态。

无论何时运行服务器端代码,整个页面都是从头开始重build的。 这有几个含义:

  • 表单从客户端提交到Web服务器。 这是关于网页浏览器可以采取的最慢的行动,尤其是在ASP.Net的forms可能填充额外的领域(即:ViewState)。 对于微不足道的活动而言,经常这样做会使您的应用程序显得迟钝,即使其他所有内容都很好也很有活力。
  • 它在带宽(上行和下行)和CPU /内存方面增加了服务器的负载。 涉及重build页面的一切都将不得不再次发生。 如果页面上有dynamic控件,请不要忘记创build它们。
  • 自从上次请求以来,对DOM做的任何操作都会丢失,除非您记得为此请求重新执行操作。 你的页面的DOM被重置

如果你可以摆脱它,你可能会想把它推到JavaScript,并避免回发。 也许使用一个XmlHttpRequest()调用来触发你需要的任何服务器端操作。

将runat =“server”属性添加到标记中,然后您可以从代码隐藏中引用它。

将runat添加到标记中的元素

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

然后你可以通过使用formSpinner.Attributes(“class”)来获得控件的类属性它只会是一个string,但你应该能够编辑它。

你如何做到这一点没有runat =“服务器”? 例如,如果你有一个

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

…并尝试从UpdatePanel内更新它永远不会得到更新。

但是,如果你保持它作为一个普通的非服务器的HTML控制,你可以。 这里是Jquery更新它:

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

你如何在代码隐藏中做到这一点?

如果你不想让你的控制runat服务器,以防万一你需要的ID或只是不想把它添加到视图状态,

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

在后端:

 protected string _css = "modalBackground"; 

如果你只想有条件地显示或者隐藏一个<div>,那么你可以将它声明为一个<asp:panel>(把html作为div标签呈现),并将其设置为.Visible属性。

要扩展Peri的post,为什么我们不想使用viewstate下面的代码:

style="<%= _myCSS %>"

Protected _myCSS As String = "display: none"
如果您使用的是AJAX,是否需要考虑这个方法,它允许通过asp.net后端代码而不是jQuery / jscript来操作显示。