Ссылка на свойства кода на странице .aspx? - PullRequest
3 голосов
/ 15 мая 2011

На странице .aspx, как лучше всего связать свойство серверного элемента управления со свойством класса страницы (его код-позади)?Единственный способ, о котором я читал, - это использовать привязку данных:

<asp:TextBox ID="txt" runat="server" Text='<%# Me.SomePropOfMine %>' />

, а затем вызвать Me.txt.DataBind() или Me.Databind() из кода.Есть ли способ установить эту связь только на странице .aspx или упростить процесс, если у вас есть много элементов управления для привязки (без привязки всей страницы)?

Ответы [ 3 ]

5 голосов
/ 15 мая 2011

Вы можете Databind() весь Me или контейнерный элемент управления (вы можете добавить PlaceHolder элемент управления также к нужным элементам управления).потому что DataBind() рекурсивно работает с дочерними элементами управления.

Лучшим подходом, если вам не нужна привязка данных, за исключением этого, является использование связывателя выражения кода

http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx

Это позволяет вам использовать <%$ Code: Me.Property %> вместо <%# Me.Property %>.

Для получения дополнительной информации о построителях выражений в целом, если вы их вообще не знаете, ознакомьтесь со вступительным сообщением: http://www.4guysfromrolla.com/articles/022509-1.aspx

Обратите внимание, что <%= Me.Property %> НЕ будет работать с веб-элементами управления, такими как <asp:TextBox ... и т. Д. ...

PS

Единственный недостаток Code построителя выражений заключается в том, чтоВы не получите интеллигентности.Я обычно работаю над этим, написав <%= Me.TestSomething %> внутри разметки, чтобы получить мой смысл, и затем заменяю <%= на <%$ Code:, когда закончите.Раздражает, но если вы не хотите идти по пути DataBind () (и не должны этого вызывать, он может вступать в конфликт с существующей реальной привязкой данных, которую вы хотите сделать. Поверьте мне, пытаясь заставить эти работы работать адом), тогда этоэто путь.

3 голосов
/ 15 мая 2011

Есть две вещи:

  1. Используйте <% = вместо <% #, если вы хотите прочитать значения некоторых переменных. </li>
  2. Вы можете использовать Page.DataBind (), чтобы связать все элементы управления на странице.
0 голосов
/ 15 мая 2011

Если бы мне действительно нужно было это сделать, я бы использовал CodeExpressionBuilder .

Но вопрос - почему вы хотите установить свойства в разметке, а не в коде позади? Если они являются динамическими и связаны с логикой (и, вероятно, так и есть), то вы должны установить их в коде, даже если это выглядит неудобно - это сохранит логику в одном месте и разметку в другом.

...