2008-10-06 30 views
46

我試圖在代碼背後(C#)中獲取div的ID並在其上設置了一些css。我可以從DOM中抓取它,還是必須使用某種控件?如何在.NET中使用C#編輯div的CSS樣式

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

添加runat =「server」修復了我的一半問題。我現在可以在我的代碼中引用它。但是,我似乎無法設置CSS類或樣式。我試圖顯示:block或display:none。 – 2008-10-06 18:20:49

+0

Jon - 編輯您的問題以添加您在代碼隱藏以及在何處放置代碼,或者考慮開放一個新問題來處理進一步的問題。 :) – Rob 2008-10-06 18:26:07

回答

74

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"; 

這使您的財產更定義的訪問,有一些人可能會,也可能不會,要你有幫助。

3

將runat =「server」屬性添加到標記中,然後您可以從代碼隱藏中引用它。

13

確保你的div被設置爲runat =「server」,然後只需在代碼隱藏中引用它並設置「class」屬性。

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

代碼隱藏

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

的元素添加RUNAT在標記

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

然後你就可以得到控制的類使用 formSpinner.Attributes(「類屬性「) 它只會是一個字符串,但你應該可以編輯它。

6

這個問題讓我很緊張。它表明,也許你不明白如何使用服務器端代碼會影響你的頁面的DOM狀態。

無論何時運行服務器端代碼,整個頁面都是從頭開始重建的。這有幾點含義:

  • 表單從客戶端提交到Web服務器。這是關於Web瀏覽器可以採取的最慢動作,特別是在ASP.Net中,窗體可能會填充額外的字段(即:ViewState)。對於微不足道的活動來說,經常這樣做會讓你的應用看起來很呆板,即使其他一切都很好而且活潑。
  • 它增加了您的服務器的負載,在帶寬(上下游)和CPU /內存方面。涉及重建頁面的一切都將不得不再次發生。如果頁面上有動態控件,請不要忘記創建它們。
  • 自從上次請求丟失後,您對DOM所做的任何操作都會丟失,除非您記得爲此請求重新執行操作。你的頁面的DOM是重置

如果你能擺脫它,你可能想把它推到javascript並避免回發。也許使用XmlHttpRequest()調用觸發你需要的任何服務器端動作。

1

如果您只想有條件地顯示或隱藏< div>,則可以聲明它爲< asp:panel>(將html呈現爲div標籤)並將其設置爲.Visible屬性。

3

如何在沒有runat =「server」的情況下執行此操作?舉例來說,如果你有一個

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

...並嘗試從的UpdatePanel它永遠不會得到更新中更新。

但是,如果你保持它作爲一個普通的非服務器HTML控件,你可以。這裏的Jquery來更新它:

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

你如何在代碼隱藏中做到這一點?

3

如果你不想讓你的控制RUNAT服務器的情況下,你需要的ID或根本就不想將其添加到視圖狀態,

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

在後端:

protected string _css = "modalBackground"; 
1

要圍上的帖子&擴大爲什麼我們可能不想使用ViewState的下面的代碼:

style="<%= _myCSS %>"

Protected _myCSS As String = "display: none"
如果您使用的是AJAX,它可以通過asp.net後端代碼而不是jQuery/jscript來操縱顯示。