Usercontrol从内容页面的母版页访问Javascript

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Usercontrol从内容页面的母版页访问Javascript相关的知识,希望对你有一定的参考价值。

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

在我的内容页面上,我使用不同的用户控件,需要使用validation.js文件中的许多函数,但是如果我没有将<script>标记和Javascript函数放在内容页面的内容持有者中,则用户控件看不到这些函数,我会收到错误像OnNameValidation没有定义。

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

所以问题(如果你还没有从我的长篇论文中找到)是如何声明script标签和validation.js文件的路径,以便contentpages及其用户控件等可以访问函数/代码。

答案

你要做的事情应该工作,所以我怀疑你的javascript文件的路径是错误的(没有看到我只能假设你的html代码)。请记住,如果您在HEAD runat =“server”标记中有链接,则只能引用这样的javascript文件:“〜/ Scripts / validation.js”。如果没有runat =“server”,它将找不到该文件。你必须做一些像“../scripts/validation.js”这样的事情。

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

另一答案

我从ScottGu here那里得到了这个提示。

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

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

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

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

    <script src="CP.js" type="text/javascript"></script>
</head>
另一答案

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

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

如果您有Scripts,MasterPages,Pages&Controls的单独文件夹,它应该具有类似上面的内容。

以上是关于Usercontrol从内容页面的母版页访问Javascript的主要内容,如果未能解决你的问题,请参考以下文章

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

使用具有选择性模拟的母版页

asp.net 从内容页面更改母版页部分 css

asp.net 从内容页面更改母版页部分 css

如何在两个部分中使用扩展相同的母版页布局?

从子页面永久更改母版页内容