如何使用控件代码(ASP.NET)保持控件特定的css
本文关键字:控件 css NET 代码 何使用 ASP | 更新日期: 2023-09-27 18:24:56
如果我正在编写一个ASCX控件,并且该控件具有需要CSS的标记,并且该CSS将仅由控件本身使用,那么有没有一种优雅的方法(除了将其粘贴在ASCX文件本身中之外)可以将.CSS文件包含在内?
理想情况下,我会把control.ascx、control.ascx.cs、control.js和control.css都作为一个小"包"。
到目前为止,它提出了一个问题和一个令人担忧的问题:
问题:由于控件在子目录中,我不想使用一个硬编码的标记,该标记知道css在子文件夹中。我想写它,使它相对于控制代码(即:相同的文件夹),但仍然可以在运行时找到。
关注:如果我这样做是为了十个控件,我想这将是十次服务器点击。也许ScriptManager、RadScriptManager或RadStyleSheet管理器会神奇地聚合它们,但这对我来说都不是一个亮点。
关于如何解决相对路径问题,有什么想法吗?
要获得样式表相对于页面的正确路径,请调用用户控件的ResolveClientUrl
方法,将样式表相对于控件的路径传递给它:
HtmlLink link = new HtmlLink();
link.Href = this.ResolveClientUrl("control.css"); // same directory as the control
link.Attributes["type"] = "text/css";
link.Attributes["rel"] = "stylesheet";
this.Page.Header.Controls.Add(link);
尽管每个样式表都会产生一个单独的请求,但您可以通过为它们启用内容过期来减轻这个问题。