ScriptReference 类

定义

注册 ECMAScript (JavaScript) 文件,以便在 ASP.NET 网页上使用。

public ref class ScriptReference : System::Web::UI::ScriptReferenceBase
public class ScriptReference : System.Web.UI.ScriptReferenceBase
type ScriptReference = class
    inherit ScriptReferenceBase
Public Class ScriptReference
Inherits ScriptReferenceBase
继承
ScriptReference

示例

下面的示例演示如何引用嵌入在控件程序集中的自定义控件和 JavaScript 文件。 假定程序集位于网站的 Bin 文件夹中。 自定义控件对控件进行动画处理 UpdatePanel 。 JavaScript 文件编译为SampleControl.UpdatePanelAnimation.js命名的嵌入资源。 使用 和 Name 属性注册嵌入的 Assembly JavaScript 文件。

若要使用此示例,请使用自定义控件将示例中显示的 JavaScript 文件编译为嵌入资源。 将生成的程序集放入网站的 Bin 文件夹中。 有关如何在程序集中嵌入 JavaScript 文件的示例,请参阅演练:将 JavaScript 文件作为资源嵌入程序集。

以下示例显示使用自定义控件的页面。

<%@ 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>
<%@ 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>

以下示例演示自定义控件类定义。

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);
            }
        }
    }
}
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

以下示例显示了支持的 JavaScript 文件。

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);
    }
}

以下示例演示必须添加到包含自定义控件和 JavaScript 文件的项目的 AssemblyInfo 文件的代码。

[assembly: System.Web.UI.WebResource("SampleControl.UpdatePanelAnimation.js", "application/x-javascript")]
<Assembly: System.Web.UI.WebResource("SampleControl.UpdatePanelAnimation.js", "application/x-javascript")>

注解

通过 对象注册 JavaScript 文件,可以在 ASP.NET 网页上包含该文件 ScriptReference 。 可以将一个脚本文件注册为.js文件, (网站上的静态脚本文件) 。 还可以注册嵌入为程序集中的资源的脚本文件。 注册脚本文件后,可以在网页上的客户端脚本中使用其函数。

若要注册静态脚本文件,请将 对象的 属性ScriptReference设置为Path文件的相对位置。

若要注册嵌入为程序集中的资源的脚本文件,请将 Assembly 属性设置为包含该文件的程序集的名称。 然后将 属性设置为 Name 嵌入在程序集中的.js文件的名称。 在这种情况下,脚本文件必须嵌入,而不是链接。

设置 属性以 ScriptMode 指示是使用脚本的调试版本还是发布版本。

该值 Auto 生成不同的结果,具体取决于它是引用独立脚本文件还是引用作为程序集中的资源嵌入的脚本文件。 使用 属性定义 Path 独立脚本文件。 必须通过 NameAssembly 属性访问程序集引用。 值的结果 Auto 如下所示:

  • 当它应用于指定 了 属性的独立脚本文件时 PathAuto 该值等效于 Release

  • 当它应用于程序集中的脚本引用时, Auto 等效于 Inherit。 如果仅 Name 指定 ,则用于引用脚本。 当 同时指定 和 属性时Name,将使用 Path 属性而不是 Name,但Auto值仍等效于 InheritPath

构造函数

ScriptReference()

初始化 ScriptReference 类的新实例。

ScriptReference(String)

使用指定的路径初始化 ScriptReference 类的新实例。

ScriptReference(String, String)

使用指定的名称和程序集初始化 ScriptReference 类的新实例。

属性

Assembly

获取或设置包含作为嵌入资源的客户端脚本文件的程序集名称。

IgnoreScriptPath
已过时.

获取或设置一个值,该值指示从资源注册客户端脚本文件时,URL 中是否包括 ScriptPath 属性。

Name

获取或设置包含客户端脚本文件的嵌入资源的名称。

NotifyScriptLoaded
已过时.

获取或设置一个值,该值指示 ScriptResourceHandler 对象是否在 ECMAScript (JavaScript) 文件末尾自动添加代码来调用 Sys.Application 类的客户端 NotifyScriptLoaded 方法。

(继承自 ScriptReferenceBase)
Path

获取或设置引用客户端脚本文件相对于网页的路径。

(继承自 ScriptReferenceBase)
ResourceUICultures

获取或设置 Path 属性支持的 UI 区域性的逗号分隔列表。

(继承自 ScriptReferenceBase)
ScriptMode

获取或设置要使用的客户端脚本文件的版本(发布版本或调试版本)。

(继承自 ScriptReferenceBase)

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
GetUrl(ScriptManager, Boolean)

检索呈现为 src 元素的 script 特性值的 URL。

IsAjaxFrameworkScript(ScriptManager)

确定脚本引用是否为 AJAX 脚本。

IsAjaxFrameworkScript(ScriptManager)

确定指定的脚本引用是否为 ASP.NET AJAX 脚本。

(继承自 ScriptReferenceBase)
IsFromSystemWebExtensions()
已过时.

指示复合脚本是否包含对 ASP.NET AJAX 框架脚本的引用。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回一个字符串,该字符串表示 Name 属性、Path 属性或类型名称的值。

适用于