我正在尝试使用自定义HTML帮助器动态地将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源时,脚本包括正在写入响应流,如下所示:
<script src='../../Scripts/DataOutEventHandling.js' type='text/javascript'/>
此应用程序使用ASP.NET MVC 2.0
编写答案 0 :(得分:2)
在格式化的值周围使用Html.Raw
。您可以将东西放在合适的地方。 e.g。
<%=Html.Raw(Html.ScriptTag(Url.Content(script)))%>
http://msdn.microsoft.com/en-us/library/system.web.webpages.html.htmlhelper.raw(v=vs.99).aspx
答案 1 :(得分:0)
<%=Html.ScriptTag(Url.Content(script))%>
不会编码。您可能使用执行HTML编码的<%:Html.ScriptTag(Url.Content(script))%>
。
请注意<%=
和<%:
之间的区别。
答案 2 :(得分:0)
由于某种原因,脚本标记是嵌套的。在我的助手中,我添加了一个结束标记,而不是使用自关闭脚本标记,它解决了问题。
public static string ScriptTag(this HtmlHelper helper, string path)
{
return string.Format("<script src='{0}' type='text/javascript'></script>", path);
}