1

我们有一个包含大约 40 行 jquery 的编辑器模板。我尝试将此脚本放入一个<asp:Content>块中,以将所有 javascript 保存在页面内的一个位置。但是,我收到以下错误消息content controls have to be top-level controls in a content page

有什么方法可以让这个工作,所以我们没有在我们的最终输出页面上点缀脚本,或者有人可以推荐存储 ASP.NET MVC 模板中使用的 javascript 的最佳实践吗?目前,我正在考虑将代码拉入一个单独的文件并在母版页中引用它,但这意味着它会被拉入每个不太理想的页面。

提前致谢。

4

2 回答 2

0

如果您将 javascript 保存在一个单独的文件中并在需要的地方引用它,那么以后的维护会更容易。此外,如果您觉得将所有脚本放入一个文件中会增加不必要的脚本加载,则在不需要的地方,然后根据功能/模块等策略将脚本分成单独的文件,然后引用它们。

此外,据说始终保留/引用页面底部的脚本,以便页面加载更快。

于 2010-09-28T07:56:09.180 回答
0

正如 siva 所说,页面底部是“理想的”。但是,对于单独的文件。只要您不从页面中引用 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>

注意:

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

参与 js。“我们”所做的是在最底部的母版页中添加一个内容部分来保存我们的 js 内容。但是,这只适用于 ViewPage (aspx) 对象。ascx 页面对任何母版页内容部分都是“无知的”

我们目前正致力于将流程系统化,即我们将包含 asp.net 引用的“部分”js 文件保存在其中,然后通过过滤器属性将它们注入页面流。我们处于早期阶段,但这种方法的好处是部分 js 被视为文件,因此被缓存以供将来访问该页面。

无论如何,这是我们目前的方法,有兴趣发现窥视者是否使用任何类似的机制来注入包含 asp.net 对象引用的 js。

干杯...

[edit] - here's a heads up on the approach i'm talking about (this wasn't our original inspiration, but is quite similar, tho is webforms, rather than mvc) - http://www.west-wind.com/WebLog/posts/252178.aspx or this one which IS mvc: http://poundingcode.blogspot.com/2009/12/injecting-javasript-into-aspnetmvc-with.html. Finally found the article that inspired our 'search' in this: ASP.NET MVC routing and paths is js files plus http://codepaste.net/p2s3po

于 2010-09-28T08:13:55.950 回答