Coolite: AjaxEvent、AjaxMethod和Listeners 区别

一:AjaxEvent
     Coolite Toolkit所提供的AjaxEvent可以应用在很多的控件中,实现异步提交等相关功能。比如使用在Coolite Toolkit的Button控件中,通过该控件提供的机制就可以方便的使用。
复制代码
<script runat="server" language="C#">

protected
void OnAjaxEvent_Click(object sender, AjaxEventArgs e)
    {

    }
</script>

<ext:Button ID="Button1" runat="server" Text="Submit">

<AjaxEvents>

<Click OnEvent="OnAjaxEvent_Click"></Click>

</AjaxEvents>

</ext:Button>
复制代码

如果需要使用在标准控件或是其他的html标签元素上,则需要通过Coolite Toolkit所提供的ScriptManager来实现了,下面简单演示将AjaxEvent使用在官方的Button控件上。

复制代码
代码
<ext:ScriptManager ID="ScriptManager1" runat="server">
<CustomAjaxEvents>
<ext:AjaxEvent Target="myButton" OnEvent="OnAjaxEvent_Click">
<EventMask ShowMask="true" MinDelay="500" Msg="正在处理"/>
</ext:AjaxEvent>
</CustomAjaxEvents>
</ext:ScriptManager>
<script runat="server" language="C#">
protected  void OnAjaxEvent_Click(object sender, AjaxEventArgs e)
    {

    }
</script>
<asp:Button ID="myButton" runat="server" Text="点我"/>
复制代码

 

通过上面这种方式,可以把AjaxEvent添加到任何的html元素上(比如:input,div,p,span等等)。

二:AjaxMethod
     Coolite Toolkit所提供的AjaxMethod功能和ASP.NET AJAX的PageMethod是一样的,使用非常简单,详细可参考下面的简单示例:

复制代码
[AjaxMethod]
public string PageMethod()
{
    
return "调用了页面后置方法:PageMethod()";
<ext:ScriptManager ID="ScriptManager1" runat="server">
</ext:ScriptManager>
<ext:Button ID="Button1" runat="server" Text="Submit">
<Listeners>
<Click Handler="RequestMethod()"
/>
</Listeners>
</ext:Button>
<script type="text/javascript">
function RequestMethod() 
    {
        Coolite.AjaxMethods.PageMethod({
            success: function(result) {
                Ext.Msg.alert(
'返回提示', result);
            }
        });
    }
</script>
复制代码

 

通过Coolite Toolkit提供的Coolie.AjaxMethods.方法名直接调用后置方法。相互之间传递数据(简单文本串,对象,JSON)支持多种格式,这点和ASP.NET AJAX是一样的。除此之外,Coolite Toolkit还提供了更强大的页面方法调用功能,就是他可以调用母版页(MasterPage)和用户自定义控件(UserControl)里的方法。如果要调用母版页的方法,则需要在对应的母版页里提供AjaxMethod方法接口,并为其通过AjaxMethodProxyIDAttribute配置代理生成策略,如所示:

 

 

复制代码
[AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.None)]
public
partial
class MyMaster : System.Web.UI.MasterPage
{
    [AjaxMethod]
    
public
string PageMethod()
    {
        
return
"调用了母版页的后置方法:PageMethod()";
    } 
}
复制代码

 

前台页面调用:

复制代码

<%@ Page Title="" Language="C#" MasterPageFile="~/MyMaster.Master" AutoEventWireup="true"
    CodeBehind
="MasterDemo.aspx.cs" Inherits="WebApplication1.MasterDemo"
%>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<ext:ScriptManager ID="ScriptManager1" runat="server">
</ext:ScriptManager>
<ext:Button ID="Button1" runat="server" Text="Submit">
<Listeners>
<Click Handler="RequestMethod()"
/>
</Listeners>
</ext:Button>
<script type="text/javascript">
function RequestMethod() {
            Coolite.AjaxMethods.PageMethod({
                success: function(result) {
                    Ext.Msg.alert(
'返回提示', result);
                }
            });
        }
    
</script>
</asp:Content>
复制代码

 

 如果是调用用户自定义控件里的方法,方式和母版页相差不大,不同的是UserControl需要设置别名才能成功调用。如下示例:

 

复制代码
[AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.Alias, Alias =
"UC")]
public
partial
class TimeControl : System.Web.UI.UserControl
{
    [AjaxMethod]
    
public
string PageMethod()
    {
        
return DateTime.Now.ToString();
    }
}
复制代码

 

客户端使用别名调用如下:

 

复制代码
<uc1:TimeControl ID="TimeControl1" runat="server"
/>
<ext:Button ID="btnUserControl" runat="server" Text="调用UserControl的方法">
    
<Listeners>
            
<Click Handler="Coolite.AjaxMethods.UC.PageMethod(
            {
                success:function(result)
                {
                    Ext.Msg.alert(result);
                }
            });
"
/>
        
</Listeners>
</ext:Button>
复制代码

 

 三:Listeners
     Listeners在本文前面就用到过,通过Listeners给Ext按扭添加了一个客户端方法Handler;

 

引用自:http://asp.netfaq.cn/Coolite_ExtJs/thread-348-1-1.html

posted @   StarWang  阅读(386)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示