簡體   English   中英

如何停止 <%= 從 html 編碼我的腳本標簽?

[英]How do I stop <%= from html encoding my script tags?

我正在嘗試使用自定義 HTML Helper 將 js 動態添加到我的視圖中。 我面臨的問題是以下服務器標記將我的 < 和 > 編碼為 &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 源時,腳本包括正在寫入響應 stream,如下所示:

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

此應用程序是使用 ASP.NET MVC 2.0 編寫的

使用Html.Raw圍繞您的格式化值。 你可以把它放在任何你認為合適的地方。 例如

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

http://msdn.microsoft.com/en-us/library/system.web.webpages.html.9998helper.x(v=vs.asp)

<%=Html.ScriptTag(Url.Content(script))%>不會編碼。 您可能使用執行 HTML 編碼的<%:Html.ScriptTag(Url.Content(script))%>

注意<%=<%:之間的區別。

由於某種原因,腳本標簽被嵌套。 在我的助手中,我添加了一個結束標簽,而不是使用一個自結束腳本標簽,它解決了這個問題。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM