Используйте выражение c # для определения значения свойства тега сервера - PullRequest
2 голосов
/ 04 августа 2010

Можно ли установить свойство тега сервера из выражения c #, т.е. что-то вроде

<asp:TextBox Width='<%= [some c# expression] %>'/> 

Хотя это было бы довольно просто, но я не могу заставить такое выражение работать.

Спасибо за любую помощь

Ryan

Ответы [ 2 ]

6 голосов
/ 04 августа 2010

Да, это возможно.Необходимо убедиться, что элемент управления работает на стороне сервера (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" /> 

См. this и this для справки.

1 голос
/ 04 августа 2010

Остерегайтесь того типа, к которому вы привязываетесь.

например

<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...";

сделает ...

хороший код для вас,

...