脚本标记和链接标记是否在asp:content或outside之内

Xai*_*oft 10 asp.net

我有一个页面,其中有一个母版页.我是否将脚本和链接标签放在asp:content占位符或外部或者是否重要.

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

只有内容控件才能直接包含在包含内容控件的内容页面中.

Chr*_*s S 7

我可以看到五种(或8种)方式:

  1. 在代码隐藏(.cs或.vb)中使用:
    • Scriptmanager.RegisterClientScriptinclude - 使用绝对/相对路径
    • Scriptmanager.RegisterClientScriptInclude - 使用嵌入式资源
    • Scriptmanager.RegisterSlientScriptBlock - 内置源代码
  2. 将其内联添加到设计器中的ASPX页面
  3. 将它粘贴在asp:内容中,内容位于body标签内.
  4. 将它粘贴在asp:内容所在的内容中(你已经说过这不是一个选项,所以请忽略它).
  5. 使用ScriptManager在您在页面上使用的控件内以编程方式添加它,如上所述.

"只允许内容控件直接在包含内容控件的内容页面中" - 你忘记了runat ="server"吗?


Mar*_*ett 5

如果它是所有页面的脚本和链接,它应该在任何ContentPlaceHolders之外.如果它是页面的脚本和链接,它应该进入头部内部的内容.如果是默认脚本,请将其放在头部ContentPlaceHolder中,如果需要,可以将其替换为子页面.(VS通常会抱怨头部中的ContentPlaceHolder,但它对我来说很好).

// 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>
Run Code Online (Sandbox Code Playgroud)