ASP.NET MVC编辑器模板javascript位置

时间:2010-09-28 07:39:01

标签: asp.net-mvc unobtrusive-javascript

我们有一个包含大约40行jquery的编辑器模板。我尝试将此脚本放入<asp:Content>块中,以将所有javascript保存在页面中的一个位置。但是,我收到以下错误消息内容控件必须是内容页面中的顶级控件

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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文件,然后通过filterattribute将它们注入页面流。我们处于早期阶段,但这种方法的好处在于,部分js被视为一个文件,因此被缓存以供将来访问该页面。

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

...欢呼声

[edit] - 这里是我正在谈论的方法(这不是我们原来的灵感,但非常相似,这是webforms,而不是mvc) - { {3}}或者这个是mvc:http://www.west-wind.com/WebLog/posts/252178.aspx的。 终于找到了启发我们“搜索”的文章:http://poundingcode.blogspot.com/2009/12/injecting-javasript-into-aspnetmvc-with.htmlASP.NET MVC routing and paths is js files