Это плохая идея использовать `<% =` в WebControl - PullRequest
3 голосов
/ 08 сентября 2010

В последнее время я стал чаще использовать <%= в своих веб-элементах управления.Обычно я устанавливаю свойства String в Code Behind, а затем выкладываю их в форму.

Это плохая идея?

например.

Код сзади:

Свойства:

public string TheTitle { get; set; }
public string TheBody { get; set; }
public ContentItem TheContent { get; set; }
public string ContentId { 
  get 
    { return "content" + (TheContent != null) ? TheContent.Id.ToSTring() : "0"; }
}

Page_Load:

TheTitle = TheContentItem.Title;
TheBody = TheContentItem.Body;

На странице:

<div id='<%= ContentID %>'>    

  <h2 class='title'><%= TheTitle ?? "No Title" %></h2>
  <p><%= TheBody %></p>

</div>

Ответы [ 3 ]

4 голосов
/ 08 сентября 2010

Проблема возникает только в том случае, если данные не проверены.

Использование синтаксиса <%: TheBody %> в .NET 4 - эффективный способ кодирования потенциально ненадежных данных.В более ранних версиях фреймворка вы можете использовать <%= HttpUtility.HtmlEncode(TheBody) %> для того же эффекта.

2 голосов
/ 08 сентября 2010

Плохо, если данные поступают от пользователя, поскольку ваш сайт будет уязвим для XSS.

1 голос
/ 08 сентября 2010

Нет, это не проблема *, потому что это будет зависеть от вашего контроля.Вам не нужно беспокоиться о каких-либо конфликтах в вашем случае, но если вы пишете серверные элементы управления с идентификаторами, вы можете столкнуться с проблемами.

Как вы это используете, хорошо (* при условии, что вы очистили данные раньшеприсвоение его вашей переменной).Просто имейте в виду, что могут возникнуть проблемы с дублированием идентификаторов, элементов управления, сценариев и т. Д. ...

Редактировать: Перед назначением этой переменной вы можете использовать HttpUtility.HtmlEncode или, если вы используете ASP.NET 4, вы можете использовать синтаксис <%: в зависимости от того, что вы выводите.Это подпадает под те же правила, что и в aspx, это нормально, но вам просто нужно быть осторожным.Это также, сколько ASP.NET MVC используется.Представления могут быть помечены с помощью <%= и <%: Очевидно, что использование любого типа кодировки для любого HTML само по себе не будет полезным.

...