Xai*_*oft 39 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>
Run Code Online (Sandbox Code Playgroud)
我最近使用了fancybox插件,而我所做的不是将jquery脚本和fancybox脚本放在母版页中,因为我对它的工作感到沮丧,我只是把它放在我希望脚本运行的页面中,特别是在在关闭asp之前的底部:内容.当然,现在我有一个问题,如果我想在其他页面中使用fancybox插件,我会将jquery脚本和fancybox脚本放在所有5个页面而不仅仅是母版页上.在处理主页时,使用上面的示例,一切都在哪里?
Zha*_*uid 54
您可以像在正常情况下一样在主页面中声明主要的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>
Run Code Online (Sandbox Code Playgroud)
然后,任何特定于页面的JS文件都可以在引用Head ContentPlaceholder的Content控件中加载.
但是,更好的选择是查看ScriptManager和ScriptManagerProxy控件 - 这些控件可以让您更好地控制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>
Run Code Online (Sandbox Code Playgroud)
然后,在需要一些自定义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>
Run Code Online (Sandbox Code Playgroud)
ScriptManager允许您执行诸如控制使用LoadScriptsBeforeUI呈现页面脚本的位置(或者更好,然后将其设置为False)之类的操作.
我用这种方法.
<script type="text/javascript" language="javascript" src='<%=ResolveUrl("~/scripts/jquery.js") %>' ></script>
Run Code Online (Sandbox Code Playgroud)
只需将它放在标签上方......
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
Run Code Online (Sandbox Code Playgroud)