使用母版页的 ASP.net MVC 应用程序中的 jQuery

Posted

技术标签:

【中文标题】使用母版页的 ASP.net MVC 应用程序中的 jQuery【英文标题】:jQuery in an ASP.net MVC application using Master Pages 【发布时间】:2010-09-27 03:52:02 【问题描述】:

我正在尝试让简单的 jQuery 在我的内容页面上执行,但我正在尝试执行以下操作:

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

   <script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script>
   <script type="text/javascript">

       $(document).ready(function() 
           alert("hi");
       );   
   </script>

</asp:Content>

我也尝试过让以下工作:

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

   <script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script>
   <script type="text/javascript">
       function onload()
       
          $("#myDiv").css("border", "1px solid green");
       
   </script>

   <div id="myDive">
      Hello
   </div>

</asp:Content>

【问题讨论】:

您应该将 jquery 脚本引用放在您的母版页 HEAD 部分而不是内容页上(我意识到您可能只是将它放在这里作为示例并且可能已经知道这一点) 【参考方案1】:

可能是找不到JQuery文件,脚本参考试试这个:

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

无论应用是在根目录还是子目录中运行,Url.Content 都会构建正确的路径。

另外,如果你已经安装了 JS 智能感知的热修复,除了上述之外,你还可以使用它:

<% if (false)  %>
    <!-- Don't wrap this is a Url.Content call, it's like this so we get intellisense! -->
    <script src="../../Scripts/jquery-1.2.6-vsdoc.js" type="text/javascript"></script>
<%  %>

编辑:

自 RC 1 Refresh 发布以来,存在一个关于在标题中放置带有代码块的元素的已知错误,Philip Haacked 有一个很好的article 来解决它...

编辑 2:

显然,自 RC 2 发布以来,此问题已得到修复...

• 如果添加了 runat="server" 属性,作为 head 元素的直接子元素的代码块不会导致异常。

编辑 3:

前面提到的热修复仅适用于 VS2008,并且可用 here - 查看 VS Web 开发团队 here 的博客文章了解详细信息。 VS2010已经内置了。

【讨论】:

谢谢。这是在使用 区域 的 MVC 站点中修复母版页的好技巧。【参考方案2】:

尝试将 javascript 引用放在您的母版页中。这样您就不必担心尝试多次加载脚本。

【讨论】:

【参考方案3】:

必须使用才能发布网站,但是当您与只知道如何使用 Photoshop 和 Dreamweaver 的设计师合作时会很痛苦

【讨论】:

以上是关于使用母版页的 ASP.net MVC 应用程序中的 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

带有 jquery 代码的脚本块应该放在 ASP.NET MVC 母版页的啥位置?

ASP.NET内容页中访问母版页中的对象

如何在 ASP.net 页面中获取母版页的 Div?

asp.net 母版页的 JCrop 问题

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件

如何在 ASP.NET MVC 中的 2 个不同项目/应用程序之间共享母版页?