Registers an ECMAScript (JavaScript) file for use on an ASP.NET Web page.
Assembly: System.Web.Extensions (in System.Web.Extensions.dll)
<AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level := AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level := AspNetHostingPermissionLevel.Minimal)> _ Public Class ScriptReference
Dim instance As ScriptReference
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class ScriptReference
[AspNetHostingPermissionAttribute(SecurityAction::InheritanceDemand, Level = AspNetHostingPermissionLevel::Minimal)] [AspNetHostingPermissionAttribute(SecurityAction::LinkDemand, Level = AspNetHostingPermissionLevel::Minimal)] public ref class ScriptReference
public class ScriptReference
You can include a JavaScript file on an ASP.NET Web page by registering it through a ScriptReference object. You can register a script file that is located as a .js file (a static script file) on the Web site. You can also register a script file that is embedded as a resource in an assembly. After registering the script file, you can use its functions in client script on the Web page.
To register a static script file, set the Path property of the ScriptReference object to the relative location of the file.
To register a script file that is embedded as a resource in an assembly, set the Assembly property to the name of the assembly that contains the file. Then set the Name property to the name of the .js file that is embedded in the assembly. In that case, the script file must be embedded, not linked.
You set the ScriptMode property to indicate whether to use the debug or release version of the script.
The Auto value produces different results depending on whether it refers to a standalone script file or to a script file that is embedded as a resource in an assembly. A standalone script file is defined with the Path property. An assembly reference must be accessed through the Name and Assembly properties. The results for the Auto value are as follows:
-
When it is applied to a standalone script file where the Path property is specified, the Auto value is equivalent to Release.
-
When it is applied to a script reference in an assembly, Auto is equivalent to Inherit. When only Name is specified, it is used to reference the script. When Name and the Path property are both specified, the Path property is used instead of Name, but the Auto value is still equivalent to Inherit.
The following example shows how to reference a custom control and a JavaScript file that is embedded in the control assembly. The assembly is assumed to be in the Bin folder of the Web site. The custom control animates UpdatePanel controls. The JavaScript file is compiled as an embedded resource that is named SampleControl.UpdatePanelAnimation.js. You register the embedded JavaScript file by using the Assembly and Name properties.
To use this example, compile the JavaScript file that is shown in the example as an embedded resource with the custom control. Put the resulting assembly into the Bin folder of the Web site. For an example of how to embed a JavaScript file in an assembly, see Walkthrough: Embedding a JavaScript File as a Resource in an Assembly.
The following example shows a page that uses the custom control.
<%@ Page Language="VB" AutoEventWireup="true" %> <%@ Register TagPrefix="Samples" Namespace="SampleControl" Assembly="SampleControl" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>ScriptReference</title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="True" runat="server"> <Scripts> <asp:ScriptReference Assembly="SampleControl" Name="SampleControl.UpdatePanelAnimation.js" /> </Scripts> </asp:ScriptManager> <Samples:UpdatePanelAnimationWithClientResource ID="UpdatePanelAnimator1" BorderColor="Green" Animate="true" UpdatePanelID="UpdatePanel1" runat="server" > </Samples:UpdatePanelAnimationWithClientResource> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:Calendar ID="Calendar2" runat="server"> </asp:Calendar> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Register TagPrefix="Samples" Namespace="SampleControl" Assembly="SampleControl" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>ScriptReference</title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="True" runat="server"> <Scripts> <asp:ScriptReference Assembly="SampleControl" Name="SampleControl.UpdatePanelAnimation.js" /> </Scripts> </asp:ScriptManager> <Samples:UpdatePanelAnimationWithClientResource ID="UpdatePanelAnimator1" BorderColor="Green" Animate="true" UpdatePanelID="UpdatePanel1" runat="server" > </Samples:UpdatePanelAnimationWithClientResource> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:Calendar ID="Calendar2" runat="server"> </asp:Calendar> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body> </html>
The following example shows the custom control class definition.
Imports System.Web.UI Imports System.Drawing Imports System.Globalization Public Class UpdatePanelAnimationWithClientResource Inherits Control Private _updatePanelID As String Private _borderColor As Color Private _animate As Boolean Public Property BorderColor() As Color Get Return _borderColor End Get Set(ByVal value As Color) _borderColor = value End Set End Property Public Property UpdatePanelID() As String Get Return _updatePanelID End Get Set(ByVal value As String) _updatePanelID = value End Set End Property Public Property Animate() As Boolean Get Return _animate End Get Set(ByVal value As Boolean) _animate = value End Set End Property Protected Overrides Sub OnPreRender(ByVal e As EventArgs) MyBase.OnPreRender(e) If (Animate) Then Dim updatePanel As UpdatePanel = CType(Me.FindControl(UpdatePanelID), UpdatePanel) Dim script As String = String.Format( _ CultureInfo.InvariantCulture, _ "Sys.Application.add_load(function(sender, args) {{var {0}_borderAnimation = new BorderAnimation('{1}');var panelElement = document.getElementById('{0}');if (args.get_isPartialLoad()) {{{0}_borderAnimation.animate(panelElement);}}}});", _ updatePanel.ClientID, _ ColorTranslator.ToHtml(BorderColor)) ScriptManager.RegisterStartupScript( _ Me, _ GetType(UpdatePanelAnimationWithClientResource), _ ClientID, _ script, _ True) End If End Sub End Class
using System; using System.Drawing; using System.Web.UI; using System.Web; using System.Globalization; namespace SampleControl { public class UpdatePanelAnimationWithClientResource : Control { private string _updatePanelID; private Color _borderColor; private Boolean _animate; public Color BorderColor { get { return _borderColor; } set { _borderColor = value; } } public string UpdatePanelID { get { return _updatePanelID; } set { _updatePanelID = value; } } public Boolean Animate { get { return _animate; } set { _animate = value; } } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (Animate) { UpdatePanel updatePanel = (UpdatePanel)FindControl(UpdatePanelID); string script = String.Format( CultureInfo.InvariantCulture, @" Sys.Application.add_load(function(sender, args) {{ var {0}_borderAnimation = new BorderAnimation('{1}'); var panelElement = document.getElementById('{0}'); if (args.get_isPartialLoad()) {{ {0}_borderAnimation.animate(panelElement); }} }}) ", updatePanel.ClientID, ColorTranslator.ToHtml(BorderColor)); ScriptManager.RegisterStartupScript( this, typeof(UpdatePanelAnimationWithClientResource), ClientID, script, true); } } } }
The following example shows the supporting JavaScript file.
BorderAnimation = function(color) { this._color = color; } BorderAnimation.prototype = { animate: function(panelElement) { var s = panelElement.style; s.borderWidth = '2px'; s.borderColor = this._color; s.borderStyle = 'solid'; window.setTimeout( function() {{ s.borderWidth = 0; }}, 500); } }
BorderAnimation = function(color) {
this._color = color;
}
BorderAnimation.prototype = {
animate: function(panelElement) {
var s = panelElement.style;
s.borderWidth = '2px';
s.borderColor = this._color;
s.borderStyle = 'solid';
window.setTimeout(
function() {{
s.borderWidth = 0;
}},
500);
}
}
The following example shows code that you must add to the AssemblyInfo file of the project that contains the custom control and the JavaScript file.
<Assembly: System.Web.UI.WebResource("SampleControl.UpdatePanelAnimation.js", "application/x-javascript")>
[assembly: System.Web.UI.WebResource("SampleControl.UpdatePanelAnimation.js", "application/x-javascript")]
-
AspNetHostingPermission
for operating in a hosted environment. Demand value: LinkDemand. Permission value: Minimal.
-
AspNetHostingPermission
for operating in a hosted environment. Demand value: InheritanceDemand. Permission value: Minimal.
System.Web.UI.ScriptReference
Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
.NET Framework
Supported in: 3.5Reference
This new change can cause problems if you compile code that references ScriptReference using .NET 3.5 Service Pack 1 but deploy to a system that has .NET 3.5 without Service Pack 1. Specifically, the runtime will be unable to load the type System.Web.UI.ScriptReferenceBase, which is a new type in .NET 3.5 Service Pack 1.