Microsoft Asp.Net Ajax框架入门(10) ScriptManager, UpdatePanel, Timer

本文介绍了Microsoft Asp.Net Ajax框架的服务端重要控件,包括ScriptManager、ScriptMangerProxy、UpdatePanel、Timer和Exception Handler。详细说明了各控件的功能、使用场景及注意事项,如ScriptManager是框架大脑,UpdatePanel可实现部分页面更新等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VS 2008

本文介绍Microsoft Asp.Net Ajax框架的服务端重要控件

1. ScriptManager
    ScriptManager控件被寓为Asp.Net Ajax的大脑,所有的Asp.Net Ajax Enabled Pages都必须包含有且仅有一个ScriptManager控件。

< asp:ScriptManager ID = " scriptMgr "  runat = " server " >
</ asp:ScriptManager >

    包含了该控件,页面便会自动引用必需的Core Library脚本文件,并生成一些页面js。

    如要现在新建了一个User.js的脚本文件,并需要在页面中注册,则改为:

< asp:ScriptManager ID = " scriptMgr "  runat = " server " >
             < Scripts >
                 < asp:ScriptReference Path = " ~/User.js "   />
             </ Scripts >
         </ asp:ScriptManager >

    
    还可注册客户端js可调用的Web Services:

< asp:ScriptManager ID = " scriptMgr "  runat = " server " >
             < Scripts >
                 < asp:ScriptReference Path = " ~/User.js "   />
             </ Scripts >
             < Services >
                 < asp:ServiceReference Path = " ~/CountrySvc.asmx "   />
             </ Services >
         </ asp:ScriptManager >

    这样,ScriptManager会为Web Service生成一个客户端脚本的web service访问代理,供客户端调用。
2. ScriptMangerProxy
    一个页面只能有一个ScriptManager控件,但,如果页面使用MasterPage, ContentPage, 通常ScriptManager会置于MasterPage,在那里注册通用的js或web service,那么,在Content Page中可能也需要注册只需要当前页面调用的js或Web Service,那么就需要用到ScriptManagerProxy控件。
    ScriptManagerProxy继承自ScriptManager。

< asp:ScriptManagerProxy ID = " sriptMgrPxy "  runat = " server " >
             < Scripts >
                 < asp:ScriptReference Path = " Company.js "   />
             </ Scripts >
             < Services >
                 < asp:ServiceReference Path = " CompanySvc.asmx "   />
             </ Services >
         </ asp:ScriptManagerProxy >


3. UpdatePanel
    UpdatePanel定义了部分页面更新的区域,html写在ContentTemplate里面
    例:
    

< asp:UpdatePanel ID = " uPanel1 "  runat = " server " >
             < ContentTemplate >
                 < asp:TextBox ID = " txtName "  runat = " server "   />
                 < asp:Button ID = " btnShowName "  runat = " server "  Text = " show name "  OnClick = " btnShowName_Click "   />
             </ ContentTemplate >
         </ asp:UpdatePanel >

 

protected   void  btnShowName_Click( object  sender, EventArgs e)  {
        txtName.Text = "guozhijian";
    }

    点击btnShowName控件,txtName文本框的值改变了,页面没有回刷
    
    一个页面可以包含多个UpdatePanel:

< asp:UpdatePanel ID = " uPanel1 "  runat = " server " >
             < ContentTemplate >
                 < asp:TextBox ID = " txtName "  runat = " server "   />
                 < asp:Button ID = " btnShowName "  runat = " server "  Text = " show name "  OnClick = " btnShowName_Click "   />
             </ ContentTemplate >
         </ asp:UpdatePanel >
         < asp:UpdatePanel ID = " uPanel2 "  runat = " server " >
             < ContentTemplate >
                 < asp:TextBox ID = " txtAge "  runat = " server "   />
                 < asp:Button ID = " btnShowAge "  runat = " server "  Text = " show age "  OnClick = " btnShowAge_Click "   />
             </ ContentTemplate >
         </ asp:UpdatePanel >

 

protected   void  btnShowName_Click( object  sender, EventArgs e)  {
        txtName.Text = "guozhijian";
    }
     protected   void  btnShowAge_Click( object  sender, EventArgs e)  {
        txtAge.Text = "26";
    }

    
    触发UpdatePanel更新的控件可以至于UpdatePanel外部,这是需要设置UpdatePanle的 UpdateMode="Conditional",并设置UpdatePanel的<Triggers>:

< asp:UpdatePanel ID = " uPanel1 "  runat = " server "  UpdateMode = " Conditional " >
             < ContentTemplate >
                 < asp:TextBox ID = " txtName "  runat = " server "   />
             </ ContentTemplate >
             < Triggers >
                 < asp:AsyncPostBackTrigger ControlID = " btnShowName "   />
             </ Triggers >
         </ asp:UpdatePanel >
        
         < asp:Button ID = " btnShowName "  runat = " server "  Text = " show name "  OnClick = " btnShowName_Click "   />


    如果一个页面包含多个UpdatePanel,默认情况下如果任何一个UpdatePanel被触发更新,那么都会触发所有UpdatePanel的更新,为避免这一情况发生,建议总是设置UpdatePanel的UpdateMode="Conditional“,指定各自的AsyncPostBackTrigger。

4. Timer
    Timer控件用于创建一个定时执行的任务,例:在一个TextBox控件中显示当前时间,每秒刷一次

< asp:UpdatePanel ID = " uPanel1 "  runat = " server "  UpdateMode = " Conditional " >
             < ContentTemplate >
                 < asp:TextBox ID = " txtTime "  runat = " server "   />
             </ ContentTemplate >
             < Triggers >
                 < asp:AsyncPostBackTrigger ControlID = " timer1 "   />
             </ Triggers >
         </ asp:UpdatePanel >
         < asp:Timer ID = " timer1 "  OnTick = " timer1_Tick "  runat = " server "  Interval = " 1000 "   />

 

protected   void  timer1_Tick( object  sender, EventArgs e)  {
        txtTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
    }


5. Exception Handler
    如何异步回刷请求提交后,出现异常,那么在客户端会有一个alert提示框提示异常信息

protected   void  btnShowName_Click( object  sender, EventArgs e)  {
        throw new Exception("没有取到名字");
    }


    如果,需要对页面的异步回刷请求做统一异常处理,那么可以订阅ScirptManager的AsyncPostBackError

protected   void  Page_Load( object  sender, EventArgs e)
     {
        ScriptManager mgr = ScriptManager.GetCurrent(this.Page);
        mgr.AsyncPostBackError += new EventHandler<AsyncPostBackErrorEventArgs>(mgr_AsyncPostBackError);
    }


     void  mgr_AsyncPostBackError( object  sender, AsyncPostBackErrorEventArgs e)  {
        //
        ScriptManager.GetCurrent(this.Page).AsyncPostBackErrorMessage = "we are sorry";
    }


    当ScriptManager的AsyncPostBackError事件触发时,设置 AsyncPostBackErrorMessage

Reference from : http://www.cnblogs.com/guozhijian/archive/2008/02/17/1071242.html

转载于:https://www.cnblogs.com/zhangchenliang/archive/2013/03/21/2973218.html

内容概要:本文档详细介绍了一个基于MATLAB实现的跨尺度注意力机制(CSA)结合Transformer编码器的多变量时间序列预测项目。项目旨在精准捕捉多尺度时间序列特征,提升多变量时间序列的预测性能,降低模型计算复杂度与训练时间,增强模型的解释性和可视化能力。通过跨尺度注意力机制,模型可以同时捕获局部细节和全局趋势,显著提升预测精度和泛化能力。文档还探讨了项目面临的挑战,如多尺度特征融合、多变量复杂依赖关系、计算资源瓶颈等问题,并提出了相应的解决方案。此外,项目模型架构包括跨尺度注意力机制模块、Transformer编码器层和输出预测层,文档最后提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,尤其是熟悉MATLAB和深度学习的科研人员、工程师和研究生。 使用场景及目标:①需要处理多变量、多尺度时间序列数据的研究和应用场景,如金融市场分析、气象预测、工业设备监控、交通流量预测等;②希望深入了解跨尺度注意力机制和Transformer编码器在时间序列预测中的应用;③希望通过MATLAB实现高效的多变量时间序列预测模型,提升预测精度和模型解释性。 其他说明:此项目不仅提供了一种新的技术路径来处理复杂的时间序列数据,还推动了多领域多变量时间序列应用的创新。文档中的代码示例和详细的模型描述有助于读者快速理解和复现该项目,促进学术和技术交流。建议读者在实践中结合自己的数据集进行调试和优化,以达到最佳的预测效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值