2011-07-16 56 views
3

我有一個div元素,我想從代碼中更改它的dir屬性。 問題是我無法在div上設置runat=server屬性,所以無法從代碼訪問它。從代碼訪問div元素

使用asp.net,c#,框架4.0。

有什麼想法?

謝謝。

+3

爲什麼你說你不能設置runat =「server」?正如我記得WebForms這是可能的(你會得到無類型的HtmlControl對象)。 – oryol

+0

我有一個網格unger這個div,我循環這個網格,並改變網格上的東西。如果這個div被設置爲runat = server,那麼這個循環會搞砸。不知道爲什麼.. –

+0

@ Itay.B:然後我建議你開始一個單獨的問題,以瞭解爲什麼runat = div上的服務器會擾亂網格上的循環。 – Heinzi

回答

4

如果你不希望設置div來runat="server"這樣你就可以做到以下幾點:

<div dir='<%= GetDir() %>'> 
    Your text 
</div> 

,並在後面的代碼您可以使用以下代碼設置方向:

if(You Condition) 
     { 
      return "ltr"; 
     } 
     else 
     { 
      return "rtl"; 
     } 
1

是的,你不能訪問頁面上的客戶端元素,只能訪問服務器端(asp.net是面向服務器的框架)。客戶端控件被編譯爲Literal控件,其中包含html。

如果您不想爲runat="server"屬性設置div屬性,您可以register client script編輯您的divs內容。
如果您設置了runat="server"屬性,併爲其設置了ID="YOUR_DIV_ID_HERE",則該名稱將可從代碼YOUR_DIV_ID_HERE下訪問。

0

使用jquery和回調函數來調用服務器端函數。

0

您可以在HTML元素上設置runat =「server」屬性。只做了一個本地演示,工作得很好。它將被表示爲HtmlGenericControl(http://msdn.microsoft.com/en-us/library/7512d0d0(v=VS.100).aspx)。

編輯:你說你不能用runat =「server」從代碼中訪問元素。我不知道爲什麼這會是一個問題,因爲html渲染應該沒有什麼不同。也許它與客戶端id改變的元素有關?如果你依賴這個,你可以嘗試爲你的div設置ClientIdMode = Static。

1

如果你願意,你可以做到這一點也

<div><%= your server variable %> </div>