| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка под ASP.NET > <%= %> в вэб-контролах |
| Автор: Bogdan1024 2.7.2008, 15:19 |
| Объяснять долго. Посмотрите, пожалуйста, почему не работает. |
| Автор: Bogdan1024 5.7.2008, 22:51 | ||||
| Тупо нипанимаю. Переделал из
В
И заработало. Тупо нипанимаю почему первый случай не работает. Ну ладно, хоть как-то, и то хорошо. Если кто знает почему первым способом нельзя - пишите! |
| Автор: wotker 5.7.2008, 23:05 | ||
У меня так работает:
|
| Автор: Bogdan1024 5.7.2008, 23:16 |
| ...у тебя работает, но не то |
| Автор: wotker 5.7.2008, 23:32 |
| Хм.. я торможу а в чем разница? Что такое LabelText? |
| Автор: Bogdan1024 6.7.2008, 00:33 |
| Тебе следовало скачать проект чтобы понять о чём речь. Ну да ладно. LabelText - свойство WebControl'a, которое задаётся на странице. <% %> - в этих чудо-скобках можно на странице писать код, который исполнится кажется в событии OnPreRender. <%= %> - сокращёние. То же, что и Response.Write <%# %> - датабиндиг |
| Автор: wotker 6.7.2008, 01:04 | ||||
Ага.. понятно
В первый раз такое увидел. Думал '=' случайно закрался. На мой взгляд использование этой конструкции чревато последствиями. Зачем изобретать какие-то хаки, если можно сделать более цивильным способом. Более того раз мы позволяем вставлять любые выражения, как парсер должен обрабатывать такие конструкции?
|
| Автор: Bogdan1024 6.7.2008, 01:21 | ||
ИМХО это дико удобно. Таким конструкциям быть! |
| Автор: Idsa 6.7.2008, 09:49 |
Готов поспорить, что ты не программировал на PHP, чистом ASP или еще каком-нибудь языке, где embedded code - норма жизни. Даже самые заядлые PHP-шники обалдевают от ASP.NET'овского code behind. PHP'никам для некоторого подобия code behind приходится использовать Smarty (вроде так называется). Но это совсем не то... Да я и сам после PHP'ного "macaronni code" был впечатлен code behind. Embedded code, а вместе с ним и конструкции <%, <%= существуют в .NET для совместимости с чистым ASP: чтобы сильно не пугать программистов, переходящих на ASP.NET. Добавлено через 14 минут и 37 секунд Конструкцию <%= нельзя использовать для установки свойств. Насколько я помню, она будет воспринята как строка. Я вижу причину в том, что конструкция <%= выполняется на этапе рендеринга, поэтому было бы легкомысленно разрешать разработчикам использовать ее для установки свойств: на форумах была бы одна из популярнейших тем "почему я установил свойство через <%=, а оно не установилось" |
| Автор: wotker 6.7.2008, 10:47 | ||||
мм. а здесь нет противоречия? |
| Автор: Idsa 6.7.2008, 10:49 | ||||
Со скриптами, конечно, удобно... но это не более чем исключение, подтверждающее правило:
Добавлено через 27 секунд А мы их в соседней теме рассматривали Добавлено через 3 минуты и 18 секунд Нет. Здесь немного не то имеется в виду. <script language="javascript"> var control = document.getElementById('<%= this.SomeControl.ClientId %>'); </script> |
| Автор: Bogdan1024 6.7.2008, 11:18 | ||||||||||
Ты проспорил, я программил и на ASP и на PHP
Можно. Могу выложить пример где такая привязка работает.
Ну дык, вот одна тема уже есть
Вот-вот
Аналогично, тоже дико удобно! |
| Автор: Idsa 6.7.2008, 11:33 |
Ага, давай. Надо было на что-нибудь спорить Удобно? Ну, конечно, удобно! НО! Embedded code удобен до поры до времени. Как только проект разрастается, в этом макаронном коде становится невозможно разобраться. К тому же еще могут начаться проблемы из-за того, что <%= и <%$ выполняются на этапе рендеринга, и поэтому их нельзя считать в том же Page_Load. Ну не спроста даже PHP'ники уже практически не пишут inline код! |
| Автор: PashaPash 6.7.2008, 17:22 | ||
Idsa, ASP.NET codebehind - это нестрогая реализация MVC. Поэтому код, относящийся ко view, лучше писать в aspx, а не в code behind. Иначе макароны не разделяются, а просто переносятся в .aspx.cs.
|
| Автор: Bogdan1024 8.7.2008, 15:31 | ||||
Таки не могу Так что действительно таким образом присваивать значения свойствам нельзя, и инструкции <% %> - это зло |