2010-09-28 166 views
1

我們有一個包含約40行jquery的編輯器模板。我嘗試將此腳本放入<asp:Content>塊中,以將所有javascript保留在頁面中的一個位置。但是,我收到以下錯誤消息內容控件必須是內容頁中的頂級控件。ASP.NET MVC編輯器模板javascript位置

有沒有什麼辦法讓這個工作,所以我們沒有腳本點綴我們的最終輸出頁面或可能有人推薦存儲在ASP.NET MVC模板中使用的JavaScript的最佳做法?此刻,我正在考慮將代碼拉到一個單獨的文件中,並在母版頁中引用它,但這意味着它會被拖入每個不太理想的頁面。

在此先感謝。

回答

0

如果您將javascript保存在單獨的文件中,並在需要的時候引用它,對於以後的維護會更容易。另外,如果您覺得將所有腳本放入單個文件中會增加不必要的腳本加載,然後將腳本分解爲單獨的文件,這些文件基於功能/模塊等用途,然後引用它們。

另外,據說總是在頁面底部保留/引用腳本,以便頁面加載速度更快。作爲siva說,

0

頁面的底部是'理想'。然而,至於分開的文件。這只是將是隻要實際的,因爲你不從頁面引用asp.net元素 - 即:

<asp:Content ContentPlaceHolderID="jsCode" ID="jsCode1" runat="server"> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      getPoundsData(); 
     }); 

     function getPoundsData() { 
      var id = $("#ID").val(); 
      var URL = '<%=Url.Action("GetPounds", "FundShareholder")%>'; 
      var params = { id: id }; 
      if (id != null) 
       SendAjaxCache("#" + $("#ShareholderID option:selected").text() + " RSP#", URL, params, null, ListDataShareholderPounds); 
     } 

     function ListDataShareholderPounds(data) { 
      if (data.length != 0) { 
       $('#shareholderPounds').html(""); 
       $('#shareholderPounds').show(); 
       $('#shareholderPounds').html(data); 
      } 
     }; 

    </script> 
</asp:Content> 

通知:在js

var URL = '<%=Url.Action("GetPounds", "FundShareholder")%>'; 

一部分。我們做什麼是將內容部分添加到最底層的母版頁中以保存我們的js內容。但是,這隻適用於ViewPage(aspx)對象內部。 ascx頁面對主頁面內容部分「無知」。

我們目前正致力於系統化這個過程,在這個過程中,我們用asp.net引用保存'partial'js文件,然後通過filterattribute將它們注入到頁面流中。我們處於早期階段,但這種方法的好處在於,部分js被視爲文件,因此被緩存以供將來訪問該頁面。

無論如何,這是我們目前的方法,將有興趣發現如果窺視使用任何類似的機制來注入包含asp.net對象引用的js。

歡呼聲......

[編輯] - 這裏有一個擡起頭來對我說的(這不是我們的最初靈感的方法,但頗爲相似,壽是web表單,而不是mvc) - http://www.west-wind.com/WebLog/posts/252178.aspx或這是哪一個是mvc:http://poundingcode.blogspot.com/2009/12/injecting-javasript-into-aspnetmvc-with.html。 終於找到了啓發我們'搜索'的文章:ASP.NET MVC routing and paths is js fileshttp://codepaste.net/p2s3po