Безопасно использовать <% # без привязки к данным - PullRequest
0 голосов
/ 18 октября 2011

Я наткнулся на некоторый код, где оригинальный программист использует <%# ... %> на странице, где он не имеет ничего общего с привязкой данных. Он используется для вывода строки на страницу. Это безопасно? <%# ведет себя как <%= в этом случае или <%:?

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Выражение между <% # ...%> вычисляется и преобразуется в строку.Результат присваивается свойству элемента управления или, если элемента управления нет, добавляется DataBoundLiteralControl.Это безопасно?Да.При первом обращении к странице ASP .Net анализирует ее, генерирует новый класс и компилирует его в сборку, включая код в этих блоках.

То, что находится между <% = ...%>, действует так же, как и предыдущее, НО результат не присваивается никакому свойству, он используется методом HtmlTextWriter.Write, который, кстати, возвращаетvoid, поэтому он не будет работать, если вы попытаетесь использовать его в выражении привязки данных.

А как насчет:

Это можно использовать в обеих конструкциях: это плюс безопасности, поскольку вычисляемая строка кодируется в формате html через System.Web.HttpUtility.HtmlEncode.Таким образом, вы можете использовать его с конструкцией привязки данных <% #: или с конструкцией записи <%: (без =). </p>

Подсказка Напишите в конструкциях что-нибудь, что приведет к ошибке компиляции, нажмите «Показать полный источник компиляции» и перейдите к этой строке.Черный ящик больше не черный ящик.

1 голос
/ 18 октября 2011

В этом случае <% # ведет себя как <% = или <%:? </p>

Только если код внутри тега явно вызывает Response.Write () или подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...