Есть ли лучший способ замены строк на страницах .aspx? - PullRequest
2 голосов
/ 25 марта 2009

У меня есть настройки страницы .aspx. У меня есть много заполнителей, которые необходимо заменить. Имя, фамилия, город, штат и т. Д.

Брось кучу ...

<asp:Label runat="server" id="Label_FirstName" Text="" />

... везде? * * 1006

Или есть способ использовать синтаксис привязки данных в обычной области страницы:

<% FirstName %>

Заранее спасибо!

Ответы [ 9 ]

8 голосов
/ 25 марта 2009

Обратите внимание, что

<asp:Label runat="server" id="Label_FirstName" Text="" />

будет экранировать ваши строки (например, заменить <и> на & lt; и & gt;), но

<%= FirstName %>

не будет. Если это ваше намерение, это нормально, но учтите, что вы можете открыть канал для XSS-атак . Для правильного экранирования строки вам может потребоваться

<%= System.Web.HttpUtility.HtmlEncode(FirstName) %>

вместо.

3 голосов
/ 25 марта 2009

Вы, безусловно, можете использовать:

<%= FirstName %>

Где FirstName является свойством страницы. Это не обязательно должно быть свойство в классе, вы можете получить доступ к чему угодно из этой строки.

Обновление: Как отметил DrJokepu, если отображаемые данные поступают из пользовательского ввода, то это открывает уязвимость XSS. Как было указано, вы используете HtmlEncode, чтобы избежать этого, в этом случае более короткий синтаксис будет:

<%= Server.HtmlEncode(FirstName) %>

И если у вас есть базовая страница, вы можете определить метод и получить:

<%= HtmlEncode(FirstName) %>

Если вы используете метки asp.net, сделайте EnableViewState = false там, где это необходимо, чтобы избежать отправки / получения ненужного состояния просмотра.


Для форматирования используйте классы ids / css и стили в таблице стилей css. Браузер может кэшировать CSS независимо от того, является ли содержимое динамическим.


Для списков информации вы можете использовать ListView или Repeaters и по-прежнему контролировать определенный HTML, который будет отправляться по проводам.

1 голос
/ 25 марта 2009

Мне нравится использовать метки, так как с ними проще связываться с цветами, шрифтами, жирным шрифтом и т. Д., Чтобы отображать ошибки или привлекать внимание пользователей к определенному тексту.

У меня обычно есть метод настройки в коде.

if(!Page.IsPostBack)
        SetupForm();

SetupForm()
{
    Label_FirstName.Text = firstName;

}
1 голос
/ 25 марта 2009

Вы, безусловно, можете использовать теги в стиле ASP (<%= %>), но я бы сказал, что ваш первый подход более понятен и прост в обслуживании. При использовании тегов в стиле ASP вы не будете связывать данные, а будете иметь доступ ко всем элементам (включая поля, свойства и другие методы) страницы.

Таким образом, оба подхода будут работать, если FirstName - это поле или свойство на странице, с которой вы работаете. Лично я считаю, что подход, основанный на контроле, лучше, но каждому свой.

0 голосов
/ 25 марта 2009

Мои эмпирические правила:

  • Если я маркирую элемент управления вводом, я использую метку, чтобы я мог установить свойство AssociatedControlID.
  • В противном случае я использую Literal или Localize control. Обычно я не создаю ярлыки напрямую, поэтому мне не нужна дополнительная разметка, которую они генерируют в других ситуациях.

Итак, в вашей ситуации я бы, вероятно, использовал элемент управления Literal.

0 голосов
/ 25 марта 2009

Джефф Этвуд исследовал предмет на Coding Horror и обнаружил, что производительность просто не имеет значения ...

ПРИМЕЧАНИЕ : кажется, что сообщения Джеффа должны быть взяты с недоверием, в конце концов ... извините за спешку в ответе без чтения комментариев

0 голосов
/ 25 марта 2009

Это зависит от контекста, в котором вы будете их использовать. Как правило, использование элементов управления asp: label хорошо, так как вы сможете получить к ним доступ из кода на своей странице. Метод привязки данных обычно используется из элемента управления, связанного с данными, например DataGrid или Repeater.

Настоящая проблема метода привязки данных заключается в том, что для этого не очень хорошая поддержка IDE. Чтобы заставить его работать, у вас должно быть свойство класса вашей страницы, которое необходимо заполнить в коде, но если имя свойства изменится, вам также нужно будет обновить страницу aspx. Если вы используете метод меток, IDE определит, есть ли изменение в названии метки или оно было полностью удалено, и выдаст ошибку времени компиляции.

В качестве альтернативы вы можете использовать jQuery для заполнения ваших данных и просто использовать интервалы в качестве заполнителей. Имейте в виду, что jQuery требует немного другого подхода к вашим страницам, так как он использует javascript для заполнения ваших полей.

0 голосов
/ 25 марта 2009

Попробуйте это:

<%= FirstName %>
0 голосов
/ 25 марта 2009

Вы можете использовать несколько меток, элемент управления Substitution или даже Literal Text, если вы хотите больше контроля над HTML.

Вы можете использовать код в вашей разметке, например:

<% = this.FirstName%>

В результате на вашей странице будет вызываться свойство FirstName, а возвращаемое значение будет помещено между меткой.

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