Как уже говорилось, <% =%> недопустимо в любом месте объявления управления сервером, за исключением случаев, когда внутренняя разметка анализируется как содержимое (например, в повторителе).
<% #%> допустимо в качестве выражения для свойств элемента управления, так как эти выражения будут оцениваться при вызове DataBind () для элемента управления.
Хотя использование Eval () выглядит немного подозрительно. В соответствии с примером Eval () будет использовать текущий объект Page в качестве связующего контекста, что означает, что значение открытого свойства с именем «test» будет связано с вызовом DataBind (). Если у вас на самом деле не определено это свойство в классе Page, выражение никогда ни к чему не приведет.
Eval () в основном предназначен для использования в выражениях внутри элементов управления, таких как Repeater, GridView, ListView и т. Д., Где есть список элементов данных, связанных с помощью шаблонов, и вам нужен метод, чтобы иметь возможность доступа к свойствам текущего элемента данных.
Для всех других элементов управления просто используйте нормальные выражения кода внутри выражения привязки данных - это намного быстрее и более интуитивно понятно, чем Eval (), который основан на отражении во время выполнения.
Если вам нужна более умная альтернатива, использующая синтаксис <% $%>, которая вообще исключает привязку данных, перейдите сюда:
http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx