代码之家  ›  专栏  ›  技术社区  ›  rism

在<script>标记中放置ContentPlaceHolder时出现问题

  •  2
  • rism  · 技术社区  · 15 年前

    我在ASP.Net母版页中有以下内容:

     <script language="javascript" type="text/javascript">
            <asp:ContentPlaceHolder ID="scriptContentHolder" runat="server"></asp:ContentPlaceHolder>
        </script>
    

    但是,当我尝试在设计模式下查看内容页时,它告诉我关联的母版页中存在错误,因为“scriptContentHolder”不存在。

    <asp:Content ID="scriptContent" ContentPlaceHolderID="scriptContentHolder" runat="server">
        g_page = "mnuSurveys";
    </asp:Content>
    

    <asp:ContentPlaceHolder ID="scriptContentHolder" runat="server"></asp:ContentPlaceHolder>
    

    并将内容页添加到此:

    <asp:Content ID="scriptContent" ContentPlaceHolderID="scriptContentHolder" runat="server">
    <script language="javascript" type="text/javascript">
        g_page = "mnuSurveys";   
        </script>
    </asp:Content>
    

    那么一切都很酷。为什么会这样?页面编译和执行得很好。。。但是如上所述,当在标记中放置ContentPlaceHolder控件时,设计器会发出嘎嘎声。

    3 回复  |  直到 15 年前
        1
  •  1
  •   intermension    15 年前

    this

    VS设计器不支持控件 在脚本块中。或者,你 Page.ClientScriptManager.RegisterClientScriptBlock

    [原文如此]

    因此,您必须使用您发布的第二种/变通方法。

        2
  •  10
  •   Ascher    14 年前

    我也遇到了同样的问题,并这样解决了:

    <%= "<script type=\"text/javascript\">" %>    
        jQuery(document).ready(function() {
            // On document ready, execute this methods... 
            <asp:ContentPlaceHolder ID="jQueryOnDocReady" runat="server" />                 
        });
    <%= "</script>"%>
    
        3
  •  0
  •   mateuscb    14 年前

    这可能有点偏离正轨。但我也遇到了同样的问题,因为我在母版页中有一些我想要的通用代码,而其他更具体的代码只在某些页面上,以下是我的解决方案:

    <script type="text/javascript">
         var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-XXXXXX-X']);
        _gaq.push(['_trackPageview']);
    </script>
    
    <asp:ContentPlaceHolder ID="PerPageScript" runat="server">
    </asp:ContentPlaceHolder>
    

    <asp:Content ID="Content1" ContentPlaceHolderID="PerPageScript" runat="server">
        <script type="text/javascript">
        ...
        </script>
    </asp:Content>