asp.net - 在 ASP.NET 中使用母版页时使用 JQuery 的正确方法是什么?

标签 asp.net jquery master-pages fancybox

在没有母版页的 aspx 页面中使用 JQuery 时没有任何问题,但是当我尝试在有母版页的页面中使用它时,它不起作用,所以我最终放置了 jquery 文件和其他脚本页面中的文件而不是母版中的文件。现在,如果我有 10 页,我将对所有 10 页执行此操作,但我知道这是不正确的。在下面的示例母版页中,我将把脚本文件放在哪里。

<html>
<head runat="server">
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <asp:ContentPlaceHolder ID="ContentPanel" runat="server">
    </asp:ContentPlaceHolder>            
</body>
</html>

我最近使用了 fancybox 插件,我所做的不是将 jquery 脚本和 fancybox 脚本放在母版页中,因为我对其工作感到沮丧,我只是将其放在我希望脚本运行的页面中,特别是在底部,就在关闭 asp:Content 之前。当然,现在我有一个问题,如果我想在其他页面中使用 fancybox 插件,我会将 jquery 脚本和 fancybox 脚本放在所有 5 个页面上,而不仅仅是母版页上。处理母版页时,使用上面的示例,所有内容都去哪里了?

最佳答案

您将像平常一样在母版页中声明主要 jQuery 脚本:

<head runat="server">
  <link href="/Content/Interlude.css" rel="Stylesheet" type="text/css" />
  <script type="text/javascript" src="/Scripts/jquery-1.3.2.min.js"></script>
  <asp:ContentPlaceHolder ID="head" runat="server">
  </asp:ContentPlaceHolder>
</head>

然后,任何页面特定的 JS 文件都可以加载到引用 Head ContentPlaceholder 的内容控件中。

但是,更好的选择是查看 ScriptManagerScriptManagerProxy控件 - 这些可以让您更好地控制向客户端提供 JS 文件的方式。

因此,您可以在母版页中放置一个 ScriptManager 控件,并在其中添加对 jQuery 核心代码的引用:

<body>
  <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
      <Scripts>
        <asp:ScriptReference Path="/Scripts/jquery-1.3.2.min.js" />
      </Scripts>
    </asp:ScriptManager>

然后,在需要一些自定义 JS 文件或 jQuery 插件的页面中,您可以:

<asp:Content ID="bodyContent" ContentPlaceholderID="body">
  <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
      <Scripts>
        <asp:ScriptReference Path="/Scripts/jquery.fancybox-1.2.1.pack.js" />
      </Scripts>
  </asp:ScriptManagerProxy>

ScriptManager 允许您执行诸如控制页面脚本在页面上的呈现位置之类的操作 LoadScriptsBeforeUI (或者更好的是,将其设置为 False 后)。

关于asp.net - 在 ASP.NET 中使用母版页时使用 JQuery 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731407/

相关文章:

c# - 在服务器端使用 url 哈希获取当前页面的完整 url

javascript - Jquery调用预定义函数?

c# - Flickr 'Invalid auth token (98)' 从 Asp.net 应用程序上传视频

c# - 从 Asp.net webMethod 返回 Json 对象到 Ajax 调用

php - jquery 切换问题

asp.net-mvc - ASP.NET MVC 母版页 : "' Model' is not a member of 'System.Web.UI.Page' "

asp.net-mvc - ASP.NET MVC 获取 View 的最后修改日期/文件信息

c# - 为什么我在母版页中声明的 session 变量在网页上为空白?

c# - 保存工作簿时出错 : System. Runtime.InteropServices.COMException:HRESULT 异常:0x800A03EC

asp.net - 如何优化 T-SQL 查询