在现有ASP.NET WebForms应用程序

时间:2017-02-02 15:26:48

标签: asp.net webforms web-component

我有一个庞大的现有ASP.NET WebForms应用程序。这个应用程序有一个管理安全,导航,...的主页 开发的页面位于ContentPlaceHolder中。

我想在JS中使用Web组件开发新页面。要在页面上使用Web组件,必须将其导入(<link rel="import" href="...">)。此导入必须位于页面的<head>部分。就我而言,<head>位于母版页上。因此,我必须导入母版页中的所有现有Web组件才能使用它们。

这听起来不是一个好主意。

我怎么能这样做?

2 个答案:

答案 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将确保他们最终到达客户端的正确位置。