tempad
ReadyGo!技术成就梦想 >>Ajax教程 >> 结合MS AJAX将js文件编译到动态链接库

结合MS AJAX将js文件编译到动态链接库

ReadyGo!技术成就梦想 网络搜索 efish 2008-2-24 2:51:40

为了使javascript代码不被窃取,我们可以将js文件编译成动态链接库(dll)文件。下面为了演示这一功能,创建了一个控件。

 程序代码:http://www.cnblogs.com/Files/hblynn/SampleControlsCS.rar

一、创建一个类库项目,命名为UpdateAnimate。

二、向项目中添加引用System.Web, System.Drawing, System.Web.Extensions

三、向项目中添加一个Jscript的文件UpdatePanelAnimation.js

四、向文件中添加如下代码:


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


这段代码中,包含一段临时改变UpdatePanel控件样式的方法

五、解决方案资源管理器中,右键查看UpdatePanelAnimation.js的属性,把高级中的“生成操作”属性设置成“嵌入的资源”。

六、向项目中添加一个类CustomControl

七、替换类中的代码:

using System;
using System.Drawing;
using System.Web.UI;
using System.Web;
using System.Globalization;

namespace UpdateAnimate
{
    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);
            }
        }
    }
}

八、向AssemblyInfo.cs文件中添加如下行:

九、生成项目。

控件演示:

一、创建一个Ajax-enabled类型的网站项目。

二、向网站跟目录下添加bin目录。

三、从控件项目的bin\Debug或 bin\Release目录拷贝UpdateAnimate.dll到网站bin目录里。

四、替换Default.aspx的内容并运行程序:

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register TagPrefix="Samples" Namespace="UpdateAnimate" Assembly="UpdateAnimate" %>

<!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 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="UpdateAnimate" Name="UpdateAnimate.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>
http://www.cnblogs.com/hblynn/archive/2007/02/01/637312.html

责任编辑: efish 参与评论 查找更多:
相关文章
AJAX在Post中文的时候解决乱码的方法 AJAX在Post中文的时候解决乱码的方法
Ajax优于JSF的原因 Ajax优于JSF的原因
基于css样式绑定的样式驱动式AJAX程序开发(.net实现… 基于css样式绑定的样式驱动式AJAX程序开发(.net实现)
ajax进度条 ajax进度条
利用Asp.net Ajax异步获取xml文档内容 利用Asp.net Ajax异步获取xml文档内容
Ajax实现无刷新树 Ajax实现无刷新树
Ajax实现在textbox中输入内容,动态从数据库中模糊查… Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
Ajax实现DataGrid/DataList动态ToolTip Ajax实现DataGrid/DataList动态ToolTip
Ajax简单示例之改变下拉框动态生成表格 Ajax简单示例之改变下拉框动态生成表格
AJAX支持的自动填充表单 AJAX支持的自动填充表单
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想