使用c#表达式定义服务器标记属性值

Rya*_*yan 2 c# asp.net web-controls

是否可以从ac#表达式设置服务器标签的属性,即类似

<asp:TextBox Width='<%= [some c# expression] %>'/> 
Run Code Online (Sandbox Code Playgroud)

?

我虽然这很简单,但我无法运行这样的表达式.

谢谢你的帮助

瑞安

Ode*_*ded 6

是的,这是可能的.您需要确保控件运行服务器端(runat="server"),但确切地取决于您要在表达式中评估的内容.

只要表达式返回一个字符串,它应该没问题.

<asp:TextBox id="txt" runat="server" Width='<%= (10 * 10).ToString() %>px'/> 
Run Code Online (Sandbox Code Playgroud)

这将导致width='100'浏览器中的a .

更新:

以上是完全错误的.您不能以这种方式将服务器端代码渲染块(<%%>和<%=%>)放在服务器端控件标记中(因为它已经是运行服务器端).

为了动态控制值,需要在代码隐藏或单独的渲染块中完成:

<%
  txt.Width = (10 * 10).ToString() + "px";
%>
<asp:TextBox id="txt" runat="server" /> 
Run Code Online (Sandbox Code Playgroud)

见这和此以供参考.