0

我正在编辑这个原始问题,因为我认为我已经缩小了问题范围......

我的站点中有一个视图不允许我将 $document.ready 放在母版页内容占位符中。我已经将这个页面剥离到了最基本的部分,唯一的特别之处在于它在 global.asax 中有一个自定义路由

 routes.MapRoute("Books",
                 "{controller}/{action}/{keywords}/{pageNumber}",
                  new { controller = "Books", action = "SearchResults" }
                 );

知道为什么这个自定义路由会在放入母版页内容占位符区域时停止 $document.ready 正常工作吗?

4

3 回答 3

5

我遇到了同样的问题,结果发现当我使用某个路由时,它改变了站点的感知文件层次结构,例如 .js 文件的 ../../Content 链接不再起作用。我通过将我的 jquery 脚本引用更改为如下所示来修复它:

<script src="<%= Url.Content("~/Content/jquery-1.2.6.min.js") %>" type="text/javascript"></script>
于 2008-10-30T18:13:32.020 回答
2

您的母版页(或查看页面,如果您不使用母版页)需要引用 jquery。这包含在 MVC 框架的最新 Beta 版本中。

检查以确保您的页面标签中包含 jQuery。

还要检查语法...

$(document).ready(function() { alert('loaded'); });

这些缩短的版本也可以:

$().ready(function() { alert('loaded'); });
$(function() { alert('loaded'); });
于 2008-10-29T16:51:02.233 回答
1

<script ...>只需将其粘贴在标签中视图页面的内容控件中的某个位置即可。

<asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
    <div class="contentItem">
        <%!-- yadda --%>
    </div>

    <script type="text/javascript">
        $(document).ready(function() {
         // do your worst
        });
    </script>
</asp:Content>

如果您有在每个页面上运行的内容,您可以将其剥离到 .js 文件中并从母版页访问它。但是对于与特定视图相关的功能,这可能是最简单的方法,也最容易维护。

于 2008-10-29T17:17:21.273 回答