2013-11-14 46 views
1

下面的代碼編譯,但不起作用。據我所知,數據綁定表達式允許其中任何有效的C#代碼。那麼我在這裏做錯了什麼?爲什麼不綁定表達式與C#表達式一起工作?

<asp:Panel CssClass='<%# ("my-class") %>' runat="server" ID="myPannel"> 
    Blah 
</asp:Panel> 

<% this.myPannel.DataBind(); %> 

我沒有收到任何錯誤。它只是不呈現類屬性。我嘗試了沒有括號的運氣同樣不好。

請注意,我需要一個表達式在CssClass屬性中進行評估,我期望將該表達式的結果分配給類屬性。這就是爲什麼我通過將字符串括入括號來強調這一點。

+0

你得到了什麼錯誤。我會刪除css類中的()。此外,它不需要服務器標籤,因爲它已經是一個硬編碼的常量 – TGH

+1

它不應該是''<%=「my-class」%>''? – acfrancis

+0

我沒有收到任何錯誤。它只是不呈現類屬性。我嘗試了沒有括號的運氣同樣不好。 –

回答

3

試試這個:

<html> 
<head runat="server"> 
    <title></title> 
    <script runat="server"> 
     protected void 
      Page_Load(object sender, EventArgs e) 
     { 
      this.myPannel.DataBind(); 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:Panel CssClass='<%# ("my-class") %>' 
      runat="server" 
      ID="myPannel"> 
      Blah 
     </asp:Panel> 
    </form> 
</body> 
</html> 

或者只是切換你的內嵌代碼片斷的順序:

<body> 
    <% this.myPannel.DataBind(); %> 
    <form id="form1" runat="server"> 
     <asp:Panel CssClass='<%# ("my-class") %>' 
      runat="server" 
      ID="myPannel"> 
      Blah 
     </asp:Panel> 
    </form> 
</body> 

或者乾脆使用:

<% this.myPannel.CssClass = "my-class";%> 
<form id="form1" runat="server"> 
    <asp:Panel 
     runat="server" 
     ID="myPannel"> 
     Blah 
    </asp:Panel> 
</form> 

在這三種情況下,你有確保控制屬性更新之前實體控件的內聯代碼正在頁面的生命週期中處理。

+1

謝謝,它似乎正在工作.. –

相關問題