Движок представления Spark автоматически применяет H() к ${}

Это часть моего частичного представления искры (оно называется TaskSearch):

${ Html.DropDownList("Search.Status", Model.Statuses, "All") }

он генерируется неискровым представлением с кодом:

<% Html.RenderPartial(ControllerActions.TaskSearch, ViewData["TaskSearchModel"]); %>

Spark генерирует класс представления, который содержит

Output.Write(H( Html.DropDownList("Search.Status", Model.Statuses, "All") ));

который вместо создания html создает html-кодированный html-код, поэтому я вижу html-теги на выходной странице вместо раскрывающегося списка. Возможно, я что-то упускаю, но что мне делать, чтобы отключить использование H() в сгенерированном представлении?

Если я использую

<%= Html.DropDownList("Search.Status", Model.Statuses, "All") %>

все работает нормально.


person LukLed    schedule 01.11.2009    source источник


Ответы (1)


я имел

<spark>
    <pages automaticEncoding="true"/>
</spark>

в моем web.config и

settings.SetAutomaticEncoding(true);

в global.asax и не заметил этого. Изменение на false решило проблему.

person LukLed    schedule 01.11.2009
comment
В любом случае оставить для параметра autoEncoding значение true — хорошая идея, так как это защитит вас от XSS-атак. Вы всегда можете принудительно вывести вывод без экранирования с помощью !{} (например, !{‹p›Hello ‹strong›World!‹/strong›‹/p›}. Проверьте sparkviewengine.com/documentation/ - person Daniel Liuzzi; 18.11.2009
comment
Я использовал AutomaticEncoding = true :) Раньше не замечал !{}, использовал ‹%= =›. Спасибо. Я возвращаюсь к стандартному движку просмотра, потому что он намного лучше работает с Intellisense и ReSharper. - person LukLed; 18.11.2009