Asp.net Usercontrol从内容访问Javascript';第'页;s母版页

Asp.net Usercontrol从内容访问Javascript';第'页;s母版页,asp.net,javascript,user-controls,master-pages,Asp.net,Javascript,User Controls,Master Pages,大家好,我有个问题。我有一个母版页,我的所有内容页都继承自该母版页。在这个母版页中,我有一个脚本标记,指向Javascript文件夹~/Scripts/validation.js 在我的内容页面上,我使用了不同的用户控件,这些控件需要使用validation.js文件中的许多函数,但是如果我没有将标记和Javascript函数放在contentpage的contentholder中,用户控件就看不到这些函数,我会收到如下错误未定义OnNameValidation 当然,我可以将Javascrip

大家好,我有个问题。我有一个母版页,我的所有内容页都继承自该母版页。在这个母版页中,我有一个脚本标记,指向Javascript文件夹
~/Scripts/validation.js

在我的内容页面上,我使用了不同的用户控件,这些控件需要使用
validation.js
文件中的许多函数,但是如果我没有将
标记和Javascript函数放在contentpage的contentholder中,用户控件就看不到这些函数,我会收到如下错误未定义OnNameValidation

当然,我可以将Javascript代码复制到所有页面中,但如果我在其中一个Javascript函数中发现错误,这将是30多个页面和一场维护噩梦


因此,问题是(如果你还没有从我的长篇论文中弄明白的话)我如何声明脚本标记和validation.js文件的路径,以便contentpages及其用户控件等可以访问函数/代码。

你尝试做的应该是可行的,所以我怀疑你的javascript文件的路径是错误的(在没有看到html代码的情况下,我只能假设)。请记住,您只能像这样引用javascript文件:“~/Scripts/validation.js”,如果您在HEAD runat=“server”标记中有链接。如果没有runat=“server”,它将找不到该文件。您必须执行类似“./Scripts/validation.js”的操作


作为测试,我会尝试在母版页中调用您的javascript函数,这样您就可以排除错误的文件引用。

我从ScottGu那里学到了这个技巧

将此添加到用户控件,该控件在用户控件中启用Intellisense,但始终计算为false:

<% if (false) { %>
   <script src="/Scripts/validation.js" type="text/javascript"></script>
<% } %>

您为js文件指定的路径可能在所有页面中都不匹配

script src="../JavaScript/Scriptaculous/scriptaculous.js"

如果您有单独的脚本、母版页、页面和控件文件夹,则应该有类似于上面的内容。

我目前正在我的站点中执行此操作,方法是转到母版页上的源代码,并将以下内容放在内容占位符的头部和外部

<head>
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>

    <script src="CP.js" type="text/javascript"></script>
</head>