我有一个庞大的现有ASP.NET WebForms应用程序。这个应用程序有一个管理安全,导航,...的主页 开发的页面位于ContentPlaceHolder中。
我想在JS中使用Web组件开发新页面。要在页面上使用Web组件,必须将其导入(<link rel="import" href="...">
)。此导入必须位于页面的<head>
部分。就我而言,<head>
位于母版页上。因此,我必须导入母版页中的所有现有Web组件才能使用它们。
这听起来不是一个好主意。
我怎么能这样做?
答案 0 :(得分:3)
Asp.Net允许您将ContentPlaceHolder放在head标签中。您可以加载页面所需的Web组件,而不是将它们全部加载到母版页中。
母版页
<html>
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="cpHead" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="cpBody" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
网络表单
<asp:Content ID="Content1" ContentPlaceHolderID="cpHead" runat="server">
<link rel="import" href="...">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cpBody" runat="server">
</asp:Content>
您的HTML看起来像
<html>
<head>
<title></title>
<link href="..." rel="import">
</head>
<body>
</body>
</html>
答案 1 :(得分:0)
您通常会使用RegisterClientScriptInclude
。这会将脚本文件添加到页面顶部,但不会添加到<head>
中。
ClientScript.RegisterClientScriptInclude("myScript", "myJavaScriptFile.js");
如果您真的需要<head>
,则需要使用HtmlGenericControl
HtmlGenericControl genericControl = new HtmlGenericControl("script");
genericControl.Attributes.Add("type", "text/javascript");
genericControl.Attributes.Add("src", "myJavaScriptFile.js");
this.Page.Header.Controls.Add(genericControl);
放置此代码的位置无关紧要(主,页面,用户控制)。 Aspnet将确保他们最终到达客户端的正确位置。