我有一个包含母版页的页面。我是否将脚本和链接标记放在asp:content占位符或外部,或者是否重要。
当我把它放在外面时,我收到以下警告:
只允许在包含内容控件的内容页面中使用内容控件。
答案 0 :(得分:7)
我可以看到五种(或8种)方式:
“只允许内容控件直接在包含内容控件的内容页面中” - 您是否忘记了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文件中访问所需的所有内容,就好像您已添加到本地页面一样。