HTML.Encode не работает по крайней мере не так, как я думаю, что это должно - PullRequest
1 голос
/ 14 сентября 2010

В asp.net mvc 2 view я пытаюсь что-то сделать, если true.

В приведенном ниже коде я пытаюсь использовать Html.Encode (x) для отображения значения на странице, но он ничего не отображает Что не так с оператором if с html.encode?

Работы

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%>
    <%: entry.Amount %>
  <%}%>

не работает

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {
    Html.Encode(entry.Amount);
  }%>

Ответы [ 3 ]

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

Вы вызываете Html.Encode в блоке кода, но это не означает, что результат записывается в поток вывода. Попробуйте:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {%>
    <%= Html.Encode(entry.Amount) %>
<%}%>

или короче

<%= ViewData.ContainsKey("DisplayQtyPrice") ? null : Html.Encode(entry.Amount) %>
3 голосов
/ 14 сентября 2010

Проблема в том, что вы на самом деле ничего не добавляете в поток ответов.В Html.Encode нет ничего плохого, но вам нужно сделать что-то вроде этого:

<%if (!ViewData.ContainsKey("DisplayQtyPrice")) {
    Response.Write(Html.Encode(entry.Amount));
}%>

РЕДАКТИРОВАТЬ: Тем не менее, я думаю, что ваша первая версия лучше, если у вас нет проблем с угловыми скобками:)

0 голосов
/ 14 сентября 2010

Если вы используете Visual Studio 2008 и / или .NET 3.5, вы должны закодировать свой вывод следующим образом:

Необходимость сделать это везде - перетащить разработчиков .NETК счастью, это упрощает обеспечение безопасности HTML в .NET 4, полностью устраняя эту потребность с помощью синтаксиса:

Это просто улучшение удобства использования;прочитайте это , чтобы увидеть полный джедай:

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