【问题标题】:Referencing External Files from ASP.NET Web Control?从 ASP.NET Web 控件引用外部文件?
【发布时间】:2014-01-17 20:19:16
【问题描述】:

从我的 ASP.NET Web 控件引用外部文件的首选方法是什么?

我的 Web 控件需要访问两个外部文件。一种是 CSS 文件。另一个是 JavaScript 文件。

<link href="<%= VirtualPathUtility.ToAbsolute("~/css/mycss.css") %>" rel="stylesheet" type="text/css" />
<script src="<%= VirtualPathUtility.ToAbsolute("~/scripts/myjs.js") %>" type="text/javascript"></script>

该页面可能包含我的控件的多个实例。当然,我只希望页面包含对每个文件的单个引用。

我查看了Page.ClientScript 属性和方法。但它似乎没有专门针对 CSS 的。

我还研究过使用Page.Header.Controls.Add(link) 之类的东西,但这似乎没有直接支持防止对同一文件的多次引用。

还有其他选择吗?

【问题讨论】:

    标签: asp.net webforms web-controls


    【解决方案1】:

    好的,显然没有首选的方法:

    以下似乎有效:

    if (!Page.ClientScript.IsClientScriptIncludeRegistered("MyControl.ascx.cs"))
    {
        Page.ClientScript.RegisterClientScriptInclude("MyControl.ascx.cs", ResolveClientUrl("~/scripts/myjs.js"));
    
        HtmlHead head = (HtmlHead)Page.Header;
        HtmlLink link = new HtmlLink();
        link.Attributes.Add("href", "~/css/mycss.css");
        link.Attributes.Add("type", "text/css");
        link.Attributes.Add("rel", "stylesheet");
        head.Controls.Add(link);
    }
    

    【讨论】:

    • 你不需要 css href 上的 ResolveClientUrl 吗?
    • 可能是个好主意。但是,在我的案例中,结果链接实际上是“../css/[mycss].css”,这是正确的路径。
    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2020-02-19
    • 2010-11-02
    • 1970-01-01
    • 2012-10-09
    • 2017-12-04
    相关资源
    最近更新 更多