Как мне остановить <% = от html-кодирования моих тегов скрипта? - PullRequest
0 голосов
/ 06 июля 2011

Я пытаюсь динамически добавлять js в мое представление с помощью специального помощника HTML. Проблема, с которой я сталкиваюсь, заключается в том, что следующий тег сервера кодирует мои <и> в & lt и & gt.

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    <%: Model.ProductName %>

    <%foreach (var script in Model.DynamicIncludes)
  {%>
      <%=Html.ScriptTag(Url.Content(script))%>
  <%} %>    

</asp:Content>

Вот как выглядит мой помощник:

 public static class ScriptHelper
    {
        public static string ScriptTag(this HtmlHelper helper, string path)
        {
            return string.Format("<script src='{0}' type='text/javascript'/>", path);
        }
    }

Когда я просматриваю html-источник, включенный в сценарий, он записывается в поток ответов следующим образом:

&lt;script src='../../Scripts/DataOutEventHandling.js' type='text/javascript'/&gt;

Это приложение написано с использованием ASP.NET MVC 2.0

Ответы [ 3 ]

2 голосов
/ 06 июля 2011

Используйте Html.Raw вокруг вашего отформатированного значения.Вы можете разместить это где угодно.например,

<%=Html.Raw(Html.ScriptTag(Url.Content(script)))%>

http://msdn.microsoft.com/en-us/library/system.web.webpages.html.htmlhelper.raw(v=vs.99).aspx

0 голосов
/ 06 июля 2011

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

 public static string ScriptTag(this HtmlHelper helper, string path)
    {
        return string.Format("<script src='{0}' type='text/javascript'></script>", path);
    }
0 голосов
/ 06 июля 2011

<%=Html.ScriptTag(Url.Content(script))%> не будет кодировать. Вы, вероятно, используете <%:Html.ScriptTag(Url.Content(script))%>, который выполняет кодировку HTML.

Обратите внимание на разницу между <%= и <%:.

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