2012-05-16 24 views
0

比方說,我有這樣的HTML標記一個aspx頁面上:可以參考CSS選擇器的代碼隱藏ASP.NET

 <div id = 'logo-container' class='foo'> 
      <img alt='logo' src ="images/foo.png" /> 
     </div> 

純HTML, RUNAT =服務器。

是否有可能,在ASPX代碼隱藏,指使用CSS選擇器DOM元素?你可以得到的IMG參考做這樣的事情:

foreach element in GetElement("#logo-container img") 
    { 
     do something with element, e.g. change a style attribute 
    } 

回答

1

不,不幸的是,你不能。你會按照預期的方式去做。如果您需要訪問代碼隱藏中的控件,只需添加runat="server"屬性即可。

爲什麼不想在服務器上運行控件,考慮到您需要在代碼隱藏中訪問它們?你擔心自動生成的ID嗎?如果是這樣,您可以通過將ClientIDMode設置爲靜態來解決此問題。

如果你運行在服務器上的控制,你應該能夠找到控制使用LINQ像這樣的類:

var ctrls = pnlControls.Controls.OfType<WebControl>().Where(i => i.CssClass == "logo-container"); 

注:您可以替換WebControl有一個更具體的控制如果需要的話。

0

簡短的回答 - 否。如果控制沒有被設置爲RUNAT =「服務器」,則無法從後面的代碼訪問它。但是,您可以使用Javascript訪問該元素,然後調用服務器端方法來執行您想要執行的任何邏輯。

0

我覺得更好的解決方案是:

如果你真的想改變風格/ CSS類,你可以更好地去jQuery和定製你想要的方式。