0 out of 1 rated this helpful - Rate this topic

WebResourceAttribute Class

Defines the metadata attribute that enables an embedded resource in an assembly. This class cannot be inherited.

System.Object
  System.Attribute
    System.Web.UI.WebResourceAttribute

Namespace:  System.Web.UI
Assembly:  System.Web (in System.Web.dll)
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = true)]
public sealed class WebResourceAttribute : Attribute

The WebResourceAttribute type exposes the following members.

  Name Description
Public method WebResourceAttribute Initializes a new instance of the WebResourceAttribute class with the specified Web resource and resource content type.
Top
  Name Description
Public property CdnPath Gets or set the path of a Content Delivery Network (CDN) that contains Web resources.
Public property CdnSupportsSecureConnection Gets or set a value that indicates to the ScriptManager whether a script resource should be accessed using a secure connection to the content delivery network (CDN) path when the page is accessed using HTTPS.
Public property ContentType Gets a string containing the MIME type of the resource that is referenced by the WebResourceAttribute class.
Public property PerformSubstitution Gets or sets a Boolean value that determines whether, during processing of the embedded resource referenced by the WebResourceAttribute class, other Web resource URLs are parsed and replaced with the full path to the resource.
Public property TypeId When implemented in a derived class, gets a unique identifier for this Attribute. (Inherited from Attribute.)
Public property WebResource Gets a string containing the name of the resource that is referenced by the WebResourceAttribute class.
Top
  Name Description
Public method Equals Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Returns the hash code for this instance. (Inherited from Attribute.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method IsDefaultAttribute When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute.)
Public method Match When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Explicit interface implemetation Private method _Attribute.GetIDsOfNames Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from Attribute.)
Explicit interface implemetation Private method _Attribute.GetTypeInfo Retrieves the type information for an object, which can be used to get the type information for an interface. (Inherited from Attribute.)
Explicit interface implemetation Private method _Attribute.GetTypeInfoCount Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from Attribute.)
Explicit interface implemetation Private method _Attribute.Invoke Provides access to properties and methods exposed by an object. (Inherited from Attribute.)
Top

The WebResourceAttribute class is valid only when used on assembly declarations. It is used to enable a specified embedded resource in an assembly for use as a Web resource.

For more information on resources, see ASP.NET Web Page Resources Overview.

This section contains two code examples. The first code example demonstrates how to apply the WebResourceAttribute attribute to a namespace that defines a custom control, MyCustomControl. The second code example demonstrates how to use the MyCustomControl class in a Web page.

The following code example demonstrates how to apply the WebResourceAttribute attribute on a custom assembly to define an image Web resource and an HTML Web resource. The MyCustomControl class defines a composite control that uses the resources to set the value of the ImageUrl property of an Image control that is contained within the composite control and to set the HRef property of an HtmlAnchor control linking to the HTML resource.


using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

[assembly: WebResource("image1.jpg", "image/jpeg")]
[assembly: WebResource("help.htm", "text/html", PerformSubstitution=true)]
namespace Samples.AspNet.CS.Controls
{

	public class MyCustomControl : Control
	{

		[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
		protected override void CreateChildControls()
		{
			
			// Create a new Image control.
			Image _img = new Image();
			_img.ImageUrl = this.Page.ClientScript.GetWebResourceUrl(typeof(MyCustomControl), "image1.jpg");
			this.Controls.Add(_img);

			// Create a new Label control.
			Label _lab = new Label();
			_lab.Text = "A composite control using the WebResourceAttribute class.";
			this.Controls.Add(_lab);

			// Create a new HtmlAnchor control linking to help.htm.
			HtmlAnchor a = new HtmlAnchor();
			a.HRef = this.Page.ClientScript.GetWebResourceUrl(typeof(MyCustomControl), "help.htm");
			a.InnerText = "help link";
			this.Controls.Add(new LiteralControl("<br />"));
			this.Controls.Add(a);

		}
	}

}


The following code example demonstrates how to use the MyCustomControl class in a Web page.


<%@ Page Language="C#" %>
<%@ Register TagPrefix="AspNetSamples" Namespace="Samples.AspNet.CS.Controls" Assembly="Samples.AspNet.CS.Controls" %>
<%@ Import Namespace="System.Reflection" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  protected void Page_Load(object sender, EventArgs e)
  {

    // Get the assembly metatdata.
    Type clsType = typeof(MyCustomControl);
    Assembly a = clsType.Assembly;

    // Iterate through the attributes for the assembly.
    foreach (Attribute attr in Attribute.GetCustomAttributes(a))
    {
      //Check for WebResource attributes.
      if (attr.GetType() == typeof(WebResourceAttribute))
      {
        WebResourceAttribute wra = (WebResourceAttribute)attr;
        Response.Write("Resource in the assembly: " + wra.WebResource.ToString() +
          " with ContentType = " + wra.ContentType.ToString() +
          " and PerformsSubstitution = " + wra.PerformSubstitution.ToString() + "</br>");
      }
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>WebResourceAttribute Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <AspNetSamples:MyCustomControl id="MyCustomControl1" runat="server">
      </AspNetSamples:MyCustomControl>    
    </div>
    </form>
</body>
</html>


This example requires that you compile the Image1.jpg and Help.htm resources with the assembly that contains MyCustomControl. For more information, see, /resource (C# Compiler Options) or /resource (Visual Basic).

An example of an HTML Web resource that could be used in this example is shown next. Note the use of the WebResource syntax, which is used when you set the PerformSubstitution property to true for a Web resource.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>Included Help Page</title>

</head>

<body>

<div>

<img alt="help image" src=<% = WebResource("image1.jpg") %> />

Included help file.

</div>

</body>

</html>

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Re: WebResource Naming
To further specify Whetstone's comment, I noticed that a dash (hyphen, minus sign, whatever you call it, the one that's on the keyboard) in the resource's folder name (but not in the file name itself apparently) gets converted to an underscore
WebResource Naming
The name of the resource must match the location of the embedded resource in the project. 

[Default namespace].[Folder containing resource].[Filename of resource]

In addition if the resource is in a multiple level directory structure the slash (/) character must be changed to a period (.). Also invalid characters must be replaced with an underscore (_).

To verify the name of the embedded resource the resulting DLL can be inspected.