我有一个看起来像这样的MasterPage:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" runat="server">
<head runat="server">
...
<script src="Scripts/jquery-2.1.4.min.js"></script>
...
<asp:ContentPlaceHolder ID="cphHead" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form2" runat="server" autocomplete="off" >
<asp:ContentPlaceHolder ID="cphContent" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
我有一个看起来像这样的页面:
<asp:Content ID="cphHeader" ContentPlaceHolderID="cphHead" runat="server" >
<script type="text/javascript">
$(function () {
$get('<%=txtDueDate.ClientID%>').datepicker();
});
</script>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="cphContent" runat="Server">
...
</asp:Content>
显示页面时,我们收到$ is not defined
错误,因为jQuery在调用时未定义。它在包含源代码之前生成子脚本,源代码如下:
<script type="text/javascript">
$(function () {
$get('<%=txtDueDate.ClientID%>').datepicker();
});
</script>
<script src="Scripts/jquery-2.1.4.min.js"></script>
这不是VS 2013的问题。
答案 0 :(得分:1)
我不确定,但似乎您在datepicker.js
包含之前包含了Jquery.js
,如果是这样,您应该撤消订单并先调用Jquery。
答案 1 :(得分:0)
我的建议是将所有库代码放在头脑中,将任何应用程序代码放在身体底部。
这样,您的库全部被加载,如果您的用户脚本失败,它将不会停止加载HTML。
因此,在您的方案中,您的MasterPage将如下所示:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" runat="server">
<head runat="server">
...
<script src="Scripts/jquery-2.1.4.min.js"></script>
...
</head>
<body>
<form id="form2" runat="server" autocomplete="off" >
<asp:ContentPlaceHolder ID="cphContent" runat="server">
</asp:ContentPlaceHolder>
</form>
<asp:ContentPlaceHolder ID="cphHead" runat="server">
</asp:ContentPlaceHolder>
</body>
</html>
我会花时间将cphHead
重命名为更有意义的内容,但这已经是网上推荐的做法。