2009-04-14 2 views
2

Мне просто интересно, нужно ли мне беспокоиться о кодировании значений, которые выводятся, когда я использую HTML-помощники, такие как Html.DropDownList().Вспомогательные методы ASP.NET MVC, такие как Html.DropDownList(), кодируют выходной HTML?

Если да, то как их кодировать? Это легко сделать, если я создавал выпадающее меню вручную - просто оберните каждое значение «Html.Encode()». Тем не менее, я не знаю, как это сделать при использовании HTML-помощников.

ответ

4

Похоже, что значения закодированы автоматически, поэтому нет причин для этого. Вот фрагмент исходного кода ASP.NET MVC 1.0, который можно загрузить с помощью codeplex (в SelectExtensions.cs):

private static string ListItemToOption(SelectListItem item) { 
     TagBuilder builder = new TagBuilder("option") { 
      InnerHtml = HttpUtility.HtmlEncode(item.Text) 
     }; 
     if (item.Value != null) { 
      builder.Attributes["value"] = item.Value; 
     } 
     if (item.Selected) { 
      builder.Attributes["selected"] = "selected"; 
     } 
     return builder.ToString(TagRenderMode.Normal); 
    } 
+0

При использовании большинства помощников в ASP.NET MVC крайне важно, чтобы вы * * не * кодировали текст самостоятельно. Если вы это сделаете, вы получите двукодированный текст, что неверно. – Eilon

2

Они делают.

Если вы хотите сделать это самостоятельно, то это и Html.AttributeEncode() в зависимости от того, где в кодировке HTML.

+0

Удалено из моего ответа. Вы уверены, что они всегда кодируют текст перед рендерингом html? Я уверен, что они не были в бета-версии ... – Will

+0

Отвечая на мой собственный вопрос - да, они кодируют весь вывод в бета-версии. – Will

+0

Да, их источник доступен по адресу http://codeplex.com/aspnet –

Смежные вопросы