使用MVC视图页面+ $(文档).ready

时间:2008-10-29 16:47:54

标签: jquery asp.net-mvc asp.net-mvc-routing

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

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

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

知道为什么这个自定义路由会在放入masterpages contentplaceholder区域时停止$ document.ready正常工作吗?

3 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,事实证明,当我使用某个路径时,它改变了网站的感知文件层次结构,例如.j。文件的../../Content链接不再起作用。我通过更改我的jquery脚本引用来修复它,如下所示:

<script src="<%= Url.Content("~/Content/jquery-1.2.6.min.js") %>" type="text/javascript"></script>

答案 1 :(得分:2)

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

检查以确保您的网页标记中包含jQuery。

检查语法......

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

这些缩短版本也有效:

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

答案 2 :(得分: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文件并从母版页访问它。但是对于与特定视图相关的功能,这可能是最简单的维护方式。