Выражение между <% # ...%> вычисляется и преобразуется в строку.Результат присваивается свойству элемента управления или, если элемента управления нет, добавляется DataBoundLiteralControl.Это безопасно?Да.При первом обращении к странице ASP .Net анализирует ее, генерирует новый класс и компилирует его в сборку, включая код в этих блоках.
То, что находится между <% = ...%>, действует так же, как и предыдущее, НО результат не присваивается никакому свойству, он используется методом HtmlTextWriter.Write, который, кстати, возвращаетvoid, поэтому он не будет работать, если вы попытаетесь использовать его в выражении привязки данных.
А как насчет:
Это можно использовать в обеих конструкциях: это плюс безопасности, поскольку вычисляемая строка кодируется в формате html через System.Web.HttpUtility.HtmlEncode.Таким образом, вы можете использовать его с конструкцией привязки данных <% #: или с конструкцией записи <%: (без =). </p>
Подсказка Напишите в конструкциях что-нибудь, что приведет к ошибке компиляции, нажмите «Показать полный источник компиляции» и перейдите к этой строке.Черный ящик больше не черный ящик.