我已经构建了一个使用自定义CSS的自定义服务器控件.我遇到的问题是我必须在每个使用控件的页面上设置对css文件的引用.
我可以在控件内设置此引用吗?这样我就可以添加控件而不用担心引用.
sur*_*ran 13
您需要按照以下步骤在Web控件本身中添加css/javascript/image.
修改AssemblyInfo.cs文件,以添加Web资源
[assembly:System.Web.UI.WebResource("CustomControls.Styles.GridStyles.css","text/css"),PerformSubstitution = true)]
将所需文件(css/javascript/images)添加到自定义服务器控件解决方案.请注意,我们可以在解决方案中添加文件夹,然后使用'.'(点)添加单独的文件夹
更重要的是,我们应该将BuildAction属性从内容更改为新添加的css/javascript /图像文件的嵌入式资源.
此外,我们应该从DLL加载存储的资源.最好的事件是OnPreRender下面是示例代码渲染css
protected override void OnPreRender(EventArgs e)
{
bool linkIncluded = false;
foreach (Control c in Page.Header.Controls)
{
if (c.ID == "GridStyle")
{
linkIncluded = true;
}
}
if (!linkIncluded)
{
HtmlGenericControl csslink = new HtmlGenericControl("link");
csslink.ID = "GridStyle";
csslink.Attributes.Add("href", Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControls.Styles.GridStyles.css"));
csslink.Attributes.Add("type", "text/css");
csslink.Attributes.Add("rel", "stylesheet");
Page.Header.Controls.Add(csslink);
}
}
Run Code Online (Sandbox Code Playgroud)同样适用于添加javascript
protected override void OnPreRender(EventArgs e)
{
string resourceName = "CustomControls.GridViewScript.js";
ClientScriptManager cs = this.Page.ClientScript;
cs.RegisterClientScriptResource(this.GetType(), resourceName);
}
Run Code Online (Sandbox Code Playgroud)
同样使用CSS文件中的添加图像.使用以下代码
background: url('<%=WebResource("CustomControls.Styles.Cross.png")%>') no-repeat 95% 50%;
Run Code Online (Sandbox Code Playgroud)
谢谢.
下面是我用来以编程方式添加 css 引用到 Page 的内容:
HtmlLink link = new HtmlLink();
link.Href = relativePath;
link.Attributes["type"] = "text/css";
link.Attributes["rel"] = "stylesheet";
Page.Header.Controls.Add(link);
Run Code Online (Sandbox Code Playgroud)
也许您应该添加一些代码来检查 css 文件是否已添加到标头控件。
| 归档时间: |
|
| 查看次数: |
6811 次 |
| 最近记录: |