Introduction
This article makes you go through the concept on how to embed/access JavaScript, CSS and images to server control's assembly.
Background
Resources embedded within an assembly can be accessed through the WebResource.axd HTTP Handler. This Handler is needed because we need some mechanism to get this code at the client side to be executed and rendered as well (see the source code of the page - you will observe some strange URL code that you haven't written anywhere though it is present on that page. This is because of embedding and accessing JavaScript/CSS/Images through WebResource.axd).
Using the Code
We need to follow few steps for the completion of Embedding JS/CSS/Images in an Assembly.
Step 0
Simply add the file (JS/CSS/Image) to your project, go to the Properties pane, and set the Build Action to Embedded Resource.
Step 1: AssemblyInfo.cs Entries
[assembly: System.Web.UI.WebResource("Img_Button.gif", "img/gif")];
[assembly: System.Web.UI.WebResource("TextBox.css", "text/css")];
[assembly: System.Web.UI.WebResource("ABC.js", "text/js")];
Step 2: Embedding an Image
Image img= new Image();
img.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "Img_Button.gif");
Step 3: Embedding a Stylesheet
string tempLink= "<link rel='stylesheet' text='text/css' href='{0}' />";
string location = Page.ClientScript.GetWebResourceUrl(this.GetType(), "TextBox.css");
LiteralControl include = new LiteralControl(String.Format(tempLink, location));
((HtmlControls.HtmlHead) Page.Header).Controls.Add(include);
Step 4: Embedding JavaScript
string srptLoc =Page.ClientScript.GetWebResourceUrl(this.GetType(), "ABC.js");
Page.ClientScript.RegisterClientScriptInclude("ABC.js", srptLoc);
Note
- Add .axd extension in your virtual directory configuration (all configuration settings should be like that of ASPX extension).
- File name should be
DefaultNamespace.Filename.Extension
(use reflector tool to get the actual name in the embedded assembly). This is required in Assemblyinfo.cs file entry see Step-1. - Write all the above code for registration
OnPrerender(or OnInit)
event.
protected override void OnPreRender(EventArgs e)
{
Page.ClientScript.RegisterClientScriptInclude("ABC",
Page.ClientScript.GetWebResourceUrl(this.GetType(),
"ABC.js"));
base.OnPreRender(e);
}
You may have possibly liked this article. I have written this article with the hope that it may somehow help you in due course of your learning.
5+years,ASP.NET(1.1 and 2.0,3.5),c#.net,SharePoint, Webservices,XML, SQL Server 2000, VS 2008/2005/2003, Remoting, AD, Nunit, NHibernate,Design Patterns,Microsoft Ajax,Agile Technology,LINQ,WCF,WF,REST Service,Microsoft MVC framework