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

Posted

技术标签:

【中文标题】使用 MVC 视图页面 + $(document).ready【英文标题】:using MVC view page + $(document).ready 【发布时间】:2010-09-19 20:07:47 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我也遇到过同样的事情,现在我养成了使用“/Content/...”来引用所有 JS 和 CSS 文件的习惯...我不会这样当我更新我的路线时需要担心它。【参考方案2】:

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

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

还要检查语法...

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

这些缩短的版本也可以使用:

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

【讨论】:

【参考方案3】:

只需将其粘贴在您的视图页面的内容控件中的某个&lt;script ...&gt; 标记中即可。

<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 文件中并从母版页访问它。但是对于与特定视图相关的函数,这可能是最简单的方法,也最容易维护。

【讨论】:

以上是关于使用 MVC 视图页面 + $(document).ready的主要内容,如果未能解决你的问题,请参考以下文章

通过 json 结果 MVC 渲染 Html 部分视图

在 MVC 4 和浏览器后退按钮的视图中禁用退格

有没有办法使用布局页面向 MVC 视图的主体添加样式

mvc中的异步页面加载

如何在 Razor 页面中使用 MVC 部分视图和布局

使用 MVC 在同一页面上的多个部分视图和模型绑定实例