是否有可能一個服務器標籤的屬性從C#表達,即像使用C#表達式來定義服務器標籤屬性值
<asp:TextBox Width='<%= [some c# expression] %>'/>
設置?
我雖然這將是非常簡單,但我不能得到這樣的表達式運行。
感謝所有幫助
瑞安
是否有可能一個服務器標籤的屬性從C#表達,即像使用C#表達式來定義服務器標籤屬性值
<asp:TextBox Width='<%= [some c# expression] %>'/>
設置?
我雖然這將是非常簡單,但我不能得到這樣的表達式運行。
感謝所有幫助
瑞安
是的,這是可能的。您需要確保控件運行在服務器端(runat="server"
),但取決於您在表達式中試圖評估的內容。
只要表達式返回一個字符串,它應該沒問題。
<asp:TextBox id="txt" runat="server" Width='<%= (10 * 10).ToString() %>px'/>
這將在瀏覽器中產生width='100'
。
更新:
以上是完全錯誤的。您不能以這種方式將服務器端代碼渲染塊(<%%>
和<%=%>
)置於服務器端控件標記中(因爲它已經是運行服務器端)。
爲了動態控制值,這需要無論是在代碼隱藏或單獨的渲染塊內,以進行:
<%
txt.Width = (10 * 10).ToString() + "px";
%>
<asp:TextBox id="txt" runat="server" />
請注意您綁定的類型。
例如
<asp:TextBox runat=server ID=C_TB_MyTB
Text=<%# MyText %>
Width=<%# MyWidth %>
></asp:TextBox>
結合本框與
protected string MyWidth="300";
protected string MyText = "Bla bla bla...";
將無法正常工作,而:
protected int MyWidth=300;
protected string MyText = "Bla bla bla...";
會做...
好的代碼你,
我還想補充說''%=(10 * 10).ToString()%>'是一個'Response.Write((10 * 10).ToString());',只是爲了更好理解 – 2010-08-04 09:38:58
這很奇怪。我試過你的例子:'width ='<%=(10 * 10).ToString()%>'/> 但是我得到錯誤:無法從其中創建一個類型爲「System.Web.UI.WebControls.Unit」的對象字符串表示'寬度'屬性的'%=(10 * 10).ToString()%>'。 (The TextBox is in a databound grid) 我也嘗試過一個簡單的表達式<%="40"%>和<%="40px"%>。任何想法我做錯了什麼?謝謝。 –
Ryan
2010-08-04 10:23:36
@Ryan - 'Width'是一個'Unit',所以需要一個數字+一個單位。我的例子應該是'Width ='<%=(10 * 10)。ToString()%> px'' – Oded 2010-08-04 10:29:30