作成しているコントロールが別のアセンブリにある場合は、CSS ファイルをアセンブリ内に埋め込んで再利用可能にし、コントロールからこれらのファイルへの直接リンクを作成してから、コントロールlink
にタグとしてレンダリングされるように登録します。あなたのページで
注: アセンブリ内の CSS ファイルを埋め込みリソースとしてマークする必要があることに注意してください。
ファイルを選択するだけ | プロパティを変更し、ビルドアクションプロパティを次のように設定します。

次のコードでは:
次のコード サンプルは、必要な手順を示しています (カスタム サーバー コントロール内)。
[assembly: WebResource("AjaxEnabled.Web.UI.DefaultStyle.css", "text/css")]
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (this.Page.Header != null)
{
if (!this.Page.ClientScript.IsClientScriptBlockRegistered("defaultCss"))
{
var link = new HtmlLink();
link.Href = this.Page.ClientScript.GetWebResourceUrl(
typeof(YourControlType),
"AjaxEnabled.Web.UI.DefaultStyle.css"
);
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("type", "text/css");
this.Page.Header.Controls.Add(link);
this.Page.ClientScript.RegisterClientScriptBlock(
typeof(Page),
"defaultCss",
string.Empty
);
}
}
}
ScriptManager
カスタム コントロールを含むページにコントロールのインスタンスを追加する必要があります
<asp:ScriptManager runat="server" ID="sm"/>
header
ASPX ページでは、セクションをサーバー コントロールとしてマークする必要があります。
<head runat="server">
次のコード:
link.Href = this.Page.ClientScript.GetWebResourceUrl(
typeof(YourControlType),
"AjaxEnabled.Web.UI.DefaultStyle.css");
アセンブリに埋め込まれた CSS ファイルへのリンクを直接表示します
この条件:
if (!this.Page.ClientScript.IsClientScriptBlockRegistered("defaultCss"))
...
this.Page.ClientScript.RegisterClientScriptBlock(
typeof(Page),
"defaultCss",
string.Empty
);
コントロールの複数のインスタンスをドロップした場合でも、CSS がページ内で 1 回だけレンダリングされるようにします。