Question

What is the preferred method to reference external files from my ASP.NET web control?

My web control needs to access two external files. One is a CSS file. The other is a JavaScript file.

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

The page could potentially contain multiple instances of my control. Of course, I only want the page to include a single reference to each file.

I looked at the Page.ClientScript properties and methods. But it doesn't appear to have one specifically for CSS.

I also looked at using something like Page.Header.Controls.Add(link), but this doesn't appear to have direct support for preventing multiple references to the same file.

Is there another option?

Était-ce utile?

La solution

Okay, so apparently there is no preferred method for this:

The following seems to be working:

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top