如何在服务器控件中添加css引用?

7 .net css c# asp.net

我已经构建了一个使用自定义CSS的自定义服务器控件.我遇到的问题是我必须在每个使用控件的页面上设置对css文件的引用.

我可以在控件内设置此引用吗?这样我就可以添加控件而不用担心引用.

sur*_*ran 13

您需要按照以下步骤在Web控件本身中添加css/javascript/image.

  1. 修改AssemblyInfo.cs文件,以添加Web资源

    [assembly:System.Web.UI.WebResource("CustomControls.Styles.GridStyles.css","text/css"),PerformSubstitution = true)]

  2. 将所需文件(css/javascript/images)添加到自定义服务器控件解决方案.请注意,我们可以在解决方案中添加文件夹,然后使用'.'(点)添加单独的文件夹

  3. 更重要的是,我们应该将BuildAction属性从内容更改为新添加的css/javascript /图像文件的嵌入式资源.

  4. 此外,我们应该从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)

谢谢.


Can*_*var 4

下面是我用来以编程方式添加 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 文件是否已添加到标头控件。