[英]How do I stop <%= from html encoding my script tags?
我正在嘗試使用自定義 HTML Helper 將 js 動態添加到我的視圖中。 我面臨的問題是以下服務器標記將我的 < 和 > 編碼為 < 和 >。
<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,如下所示:
<script src='../../Scripts/DataOutEventHandling.js' type='text/javascript'/>
此應用程序是使用 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.