Asp.net 脚本标记和链接标记在asp:content内部还是外部

Asp.net 脚本标记和链接标记在asp:content内部还是外部,asp.net,Asp.net,我有一个有母版页的页面。我是否将脚本和链接标记放在asp:content place holders内部或外部,或者这是否重要 当我把它放在外面时,我得到以下警告: 只允许在包含内容控件的内容页中直接使用内容控件。外部。t无论如何,内容占位符的内部将被您页面中的内容替换,因此在其中放入任何内容都没有多大意义。外部。在母版页中 占位符是母版页下的页面的包装控件。如果您指的是标记,则不能在.aspx页面中放置它们之外的任何内容。因此,您只能将它们放在标记中。如果您想要和标记,您需要在母版页的中放置,

我有一个有母版页的页面。我是否将脚本和链接标记放在asp:content place holders内部或外部,或者这是否重要

当我把它放在外面时,我得到以下警告:


只允许在包含内容控件的内容页中直接使用内容控件。

外部。t无论如何,内容占位符的内部将被您页面中的内容替换,因此在其中放入任何内容都没有多大意义。

外部。在母版页中


占位符是母版页下的页面的包装控件。

如果您指的是
标记,则不能在
.aspx
页面中放置它们之外的任何内容。因此,您只能将它们放在
标记中。如果您想要
标记,您需要在母版页的
中放置
,或者通过页面的
控件
集合动态添加它们。

如果它是所有页面的脚本和链接,它应该位于任何内容占位符之外。如果是这个页面的脚本和链接,它应该放在头部的内容中。如果它是默认脚本,请将它放在headcontentplaceholder中,如果需要,可以用子页面替换它。(VS通常抱怨头部有一个内容占位符,但对我来说效果很好)

//母版页
母版页!
//子(无JQuery)
子页面!
//子2(使用JQuery)
子页面!
我可以看到五种(或八种)方法:

  • 在代码隐藏(.cs或.vb)中,使用:
    • Scriptmanager.RegisterClientScriptinclude-使用绝对/相对路径
    • Scriptmanager.RegisterClientScriptInclude-使用嵌入式资源
    • Scriptmanager.RegisterClientScriptBlock-包含您的源代码
  • 将其内联添加到设计器中的ASPX页面
  • 将其粘贴在asp:content中,内容位于body标记中
  • 将其粘贴在asp:content中,内容位于头部(您说过这不是一个选项,所以忽略此选项)
  • 如上所述,在页面上使用的控件中使用ScriptManager以编程方式添加它

  • “仅允许在包含内容控件的内容页中直接使用内容控件”-您是否忘记了runat=“server”?

    在母版页中使用asp.net scriptreference标记来添加对javascript文件的引用,您将能够访问javascript文件中所需的所有内容,就像您将要添加到本地页面一样。

    即使它在抱怨,我也在外面,但如果我没有头部占位符,该怎么办呢。添加一个。;)我通常会得到至少3个占位符:1个用于默认脚本和样式,1个用于添加脚本和样式,以及1个内容。
    // master Page
    <head runat="server">
       <asp:ContentPlaceHolder id="head" runat="server">
          <!-- Default scripts and CSS -->
          <link rel="stylesheet" type="text/css" href="default.css" />
          <script type="text/javascript" src="jquery.js"></script>
       </asp:ContentPlaceHolder>
       <!-- Mandatory scripts and css -->
       <link rel="stylesheet" type="text/css" href="all.css" />
       <script type="text/javascript" src="all.js"></script>
    </head>
    <body>
       Master Page!
       <asp:ContentPlaceHolder id="body" runat="server" />
    </body>
    
    // Child (no JQuery)
    <asp:Content ContentPlaceHolderID="head" runat="server">
       <link rel="stylesheet" type="text/css" href="default.css" />
       <!-- Don't need JQuery -->
       <script type="text/javascript" src="prototype.js"></script>
    </asp:Content>
    <asp:Content ContentPlaceHolderID="body" runat="server">
       Child Page!
    </asp:Content>
    
    // Child 2 (with JQuery)
    <asp:Content ContentPlaceHolderID="body" runat="server">
       Child Page!
    </asp:Content>