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