2011-07-05 73 views
0

我正在嘗試使用自定義HTML助手將js動態添加到我的視圖中。我面臨的問題是,以下服務器標記正在編碼我的<和>至& lt和& gt。如何停止HTML編碼我的腳本標記<%=?

<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編寫的

回答

0

出於某種原因,腳本標記被嵌套。在我的幫助程序中,我添加了一個結束標記,而不是使用自我關閉腳本標記,並解決了問題。

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

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

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

+0

是的..我使用<%=這也是我的第一個假設 – Nick

+0

@Nick,如果您使用的是<%='並且您的幫助器方法返回一個字符串**,那麼結果將不會被HTML編碼**。我已經測試過它。你必須做一些你沒有展示的東西。正如我想說的:在我的機器上工作:-) –

+0

哈..我的最愛之一! – Nick