2009-07-07 6 views
0

У меня есть класс Customer со строкой комментарии собственности, и я пытаюсь связать это следующим образом:Как связать свойство classes с TextBox?

<asp:TextBox ID="txtComments" 
      runat="server" 
      TextMode="MultiLine" Text=<%=customer.Comments %>> 
</asp:TextBox> 

Однако, это дает мне ошибку:

теги сервера не может содержать <% ... %>.

У меня также есть метод в классе под названием GetCreatedDate и на странице ASPX, я делаю <% = GetCreatedDate()%> и <% GetCreatedDate();%>. В чем разница?

ответ

1

В качестве альтернативы вы можете установить значение в случае Page_Load кода позади файла:

txtComments.Text = customer.Comments; 
0

вы должны использовать "<% #%>" для связывания данных

<asp:TextBox ID="txtComments" 
      runat="server" 
      TextMode="MultiLine" Text="<%# customer.Comments %>"> 
</asp:TextBox> 
+0

Просто интересно, в чем разница между # и = – Xaisoft

+1

«<% #» оценивает привязку данных, когда метод DataBind называется «<% =» оценивает, когда страница визуализируется и не поддерживается для атрибутов управления сервером. –

0

Попробуйте вместо этого.

<asp:TextBox ID="txtComments" 
     runat="server" 
     TextMode="MultiLine" Text=<%# customer.Comments %>> 
</asp:TextBox> 

Обратите внимание на = к #

+0

В чем разница между = и # – Xaisoft

+0

<% = в основном равна Response.Write(), а <% # используется для привязки данных. – Brandon

+0

Я использую = в других частях, лучше ли использовать # вместо этого? – Xaisoft

0

Используйте DataBinding синтаксис, как указано, <% # клиента .Comments%>. Этот синтаксис оценивается только тогда, когда TextBox является привязкой к базе данных. Обычно вы используете его в списке DataBound. В этом случае вам необходимо вручную привязать управление. Переопределите метод OnDataBinding страницы и вызовите txtComments.DataBind();

Синтаксис привязки данных - это единственный способ декларативно установить свойства ServerControl со страницы aspx. Response.Write другого синтаксиса происходит одновременно, когда свойства ServerControl недоступны. Если элемент управления не находится внутри элемента управления данными, вам необходимо привязать его к нему.

Если вы искали все декларативные на своей странице, вы не можете использовать этот метод, потому что вам все равно нужно писать код в коде.

Альтернативный вариант, если вы хотите использовать TextBox самостоятельно без родительского элемента управления DataBound, должен был подклассифицировать TextBox, добавить свойство AutoBind, а в подклассовом контроле вызывать метод DataBind, если это правда. Это позволит вам привязать значения, не записывая код привязки данных в код позади.

Вы также можете добавить элементы управления TextBox и другие элементы формы в элемент управления FormView и привязать его к вашему объекту. В этом случае вы можете использовать синтаксис DataBinding.

0

попробовать это

<asp:TextBox ID="txtComments" 
     runat="server" 
     TextMode="MultiLine" Text='<%# customer.Comments %>'> 
</asp:TextBox> 
Смежные вопросы