【问题标题】:using MVC view page + $(document).ready使用 MVC 视图页面 + $(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 正常工作吗?

【问题讨论】:

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


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

      【讨论】:

        猜你喜欢
        • 2014-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-26
        • 2012-07-11
        • 2010-09-23
        • 1970-01-01
        相关资源
        最近更新 更多