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

时间:2009-03-24 21:08:44

标签: asp.net

我有一个包含母版页的页面。我是否将脚本和链接标记放在asp:content占位符或外部,或者是否重要。

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

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

6 个答案:

答案 0 :(得分:7)

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

  1. 在代码隐藏(.cs或.vb)中使用:
    • Scriptmanager.RegisterClientScriptinclude - 使用绝对/相对路径
    • Scriptmanager.RegisterClientScriptInclude - 使用嵌入资源
    • Scriptmanager.RegisterSlientScriptBlock - 内置源代码
  2. 将其内联添加到设计器中的ASPX页面
  3. 将其粘贴在asp:content中,其中内容位于body标签内。
  4. 将内容粘贴在内容中的内容(你说这不是一个选项,所以忽略这个)。
  5. 使用ScriptManager在您在页面上使用的控件中以编程方式添加它。
  6. “只允许内容控件直接在包含内容控件的内容页面中” - 您是否忘记了runat =“server”?

答案 1 :(得分: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>

答案 2 :(得分:2)

如果您引用的是<asp:Content />代码,则无法在.aspx页面中添加任何内容。因此,您只能将它们放在<asp:Content />标记内。如果您需要<script /><link />代码,则需要在主页的<asp:ContentPlaceHolder />中添加<head>,或者通过网页Controls动态添加它们集合。

答案 3 :(得分:1)

外。无论如何,ContentPlaceholders的内部将被替换为您网页中的内容,因此将任何内容放在那里没有多大意义。

答案 4 :(得分:1)

外部。在母版页中

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

答案 5 :(得分:1)

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