如果您正在创建的控件位于单独的程序集中,您可以将 CSS 文件嵌入到程序集中以使其可重用并从您的控件创建到这些文件的直接链接,然后在您的控件中注册它们以呈现为link
标记。在您的页面中
注意:请记住,您需要将程序集中的 CSS 文件标记为嵌入式资源
只需选择您的文件 | 然后 proeprties 并更改其Build Action属性并将其设置为:嵌入式资源
在以下代码中:
以下代码示例显示了所需的步骤:(在您的自定义服务器控件中)
[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"/>
在您的 ASPX 页面中,您需要将该header
部分标记为服务器控件
<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 在页面中仅呈现一次,即使您删除了多个控件实例