【问题标题】:Usercontrol access Javascript from a Content's Page's Master Page用户控制从内容页面的母版页访问 Javascript
【发布时间】:2009-03-11 00:07:08
【问题描述】:

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

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

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

所以问题(如果你还没有从我的长篇论文中弄清楚)是我如何用validation.js 文件的路径声明脚本标签,以便内容页面及其用户控件等可以访问函数/代码。

【问题讨论】:

    标签: asp.net javascript user-controls master-pages


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        <head>
            <asp:ContentPlaceHolder ID="HeadContent" runat="server">
            </asp:ContentPlaceHolder>
        
            <script src="CP.js" type="text/javascript"></script>
        </head>
        

        【讨论】:

          【解决方案4】:

          您为 js 文件分配的路径可能并非在所有页面中都匹配。

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-27
            • 2020-01-14
            • 2014-09-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多