使用 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】:只需将其粘贴在您的视图页面的内容控件中的某个<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 文件中并从母版页访问它。但是对于与特定视图相关的函数,这可能是最简单的方法,也最容易维护。
【讨论】:
以上是关于使用 MVC 视图页面 + $(document).ready的主要内容,如果未能解决你的问题,请参考以下文章