Ajax.Utility.RegisterTypeForAjax(typeof(_Default)) 的使用

语句的作用:页面注册方法的作用。

Ajax.Utility.RegisterTypeForAjax(typeof(命名空间.类名));

首先要在配置文件里配置

<httpHandlers>
   <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>

代码演示:

namespace WebSite
{
    public partial class tuangou : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            //注册
            Ajax.Utility.RegisterTypeForAjax(typeof(tuangou));
        }

        [AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
        public void delcookie()
        {
            var backurl = string.Empty;
            string url = HttpContext.Current.Request.QueryString["backurl"];
            HttpCookie cookie = HttpContext.Current.Response.Cookies["curdnt"];
            if (cookie != null)
            {
                DateTime dt = DateTime.Now;
                cookie.Expires = dt.AddDays(-1);

            }
        }

    }
}

前台使用后台的方法:

$(function () {

tuangou.delcookie();

});

下面演示复杂一点的下拉列表例子:

用于链接两个 DropDownList 的两种传统方法。当选定的索引更改时,返回页;或者将所有可能的数据加载到 JavaScript 数组并动态显示。希望您可以看到 AJAX 如何替代这两种解决方案。

首先,让我们来看一下我们的数据界面,并从该数据界面驱动示例。我们的数据访问层将提供两种方法:第一种方法将检索系统支持的国家/地区的列表,第二种方法将获取国家/地区 ID 并返回州/省的列表。由于这是纯数据访问,因此我们只需要使用方法。

//C#
public static DataTable GetShippingCountries();
public static DataView GetCountryStates(int countryId);

现在,让我们转到相反面,创建简单的 Web 窗体。

<asp:DropDownList ID="countries" Runat="server" /><asp:DropDownList ID="states" Runat="server" /><asp:Button ID="submit" Runat="server" Text="Submit" />

Page_Load 事件同样简单,和前述的 Web 窗体一样。我们使用数据访问层来检索可用的国家/地区,并将其绑定到countriesDropDownList 中。

public class Sample :System.Web.UI.Page
{
    private void Page_Load(object sender, System.EventArgs e)
   {
         //注册我们感兴趣的包含服务器端函数的类
        Ajax.Utility.RegisterTypeForAjax(typeof(Sample));
        if (!Page.IsPostBack)
        {
            countries.DataSource = DAL.GetShippingCountries();
            countries.DataTextField = "Country";
            countries.DataValueField = "Id";
            countries.DataBind();
            countries.Items.Insert(0, new ListItem("Please Select", "0"));
            }
   }

    [Ajax.AjaxMethod()]
    public DataView GetStates(int countryId )
    {
        Return DAL.GetCountryStates(countryId);
    }
}

我们已基本完成;剩余的就是从 JavaScript 调用 GetStates 方法和处理响应。当用户从国家/地区列表中选择新项时,我们想在逻辑上调用 GetStates。为此,我们将触发 JavaScript onChange 事件。这样就稍微更改了我们的 Web 窗体代码。

<asp:DropDownList onChange="LoadStates(this)" ID="countries" Runat="server" />

JavaScript LoadStates 函数将负责通过由 Ajax.NET 创建的代理发出异步请求。请记住,默认情况下,Ajax.NET 创建的代理的格式为 <RegisteredTypeName>.<ServerSideMethodName>。在我们的示例中,将为Sample.GetStates。我们还想传入国家/地区 ID 参数和完成服务器端函数后 Ajax.NET 应调用的回调函数。

//JavaScript
function LoadStates(countries)
{
  var countryId = countries.options[countries.selectedIndex].value;
  Sample.GetStates(countryId, LoadStates_CallBack);
}

最后一个步骤是处理我们的 LoadStates_CallBack 函数中的响应。Ajax.NET 最有用的功能大概是它支持很多 .NET 类型(我已经多次提到这一点)。回顾一下返回 DataView 的服务端函数。JavaScript 知道 DataView 什么?什么也不知道,但是 JavaScript 是面向对象的语言,而且 Ajax.NET 不只能够创建与 .NET DataView 相似的对象,还能将该函数返回的值映射到 JavaScript 副本。您应该记住 JavaScript DataView 只不过是实际 DataView 的副本,目前除了能够遍历行和访问列值以外不支持其他更多功能(例如设置 RowFilter 或 Sort 属性的功能)。

function LoadStates_CallBack(response)
{
  //如果服务器端代码出现异常
  if (response.error != null)
   {
    //我们应该能做得更好
    alert(response.error);
    return;
   }
  var states = response.value;
  //如果不是我们所希望的响应
  if (states == null || typeof(states) != "object")
   {
    return;
   }
  //获得州下拉列表
  var statesList = document.getElementById("states");
  statesList.options.length = 0; //重置州下拉列表
  //记住,其长度不是 JavaScript 中的 Length
  for (var i = 0; i < states.length; ++i)
   {
    //如命名属性一样公开行的列
    statesList.options[statesList.options.length] =
    new Option(states[i].State, states[i].Id);
   }
}

经过一些错误检查之后,前面的 JavaScript 获得州下拉列表,遍历响应的值,并动态地将选项添加到该下拉列表中。代码清晰、简单并与 C# 和 Visual Basic .NET 非常相似。就我个人而言(作为基于服务器端变量创建了 JavaScript 数组并将它们链接在一起的开发人员),我还要一段时间才能相信它真的起作用了。

有一个可能不太明显的主要问题。由于 DropDownList 是在 JavaScript 中动态创建的,因此它的项不属于ViewState,并且不被维护。这意味着按钮的 OnClick 事件处理程序需要进行一些额外的修改。


  

Ajax.Utility.RegisterTypeForAjax(typeof(_Default)) 的使用,布布扣,bubuko.com

时间: 2024-10-03 13:09:40

Ajax.Utility.RegisterTypeForAjax(typeof(_Default)) 的使用的相关文章

Ajax的简单小例子

1.首先下载ajax.dll,一个百度一下都有下载的!自行查找. 2.把ajax.dll导入到工程.右键工程-->添加引用--->浏览,找到下载好的ajax.dll文件,点击确定,这时候在工程目录下多了一个bin文件夹,里面就有ajax.dll文件,这证明引入ajax.dll成功了. 3.设置配置文件web.config. 在Web.config文件下的 <system.web>节点里面添加以下代码即可: <httpHandlers> <add verb=&quo

jquery+ajax(用ajax.dll)实现无刷新分页

利用ajax.dll那种方式的无刷新,在这就不说了,新朋友可以看下我的另一片文件http://www.cnblogs.com/dachuang/p/3654632.html 首先,这里用的是jquery自带的分页方法,所以要引用下面3个js文件 <script type="text/javascript" src="Scripts/jquery-1.8.2.min.js"></script> <script type="tex

asp.net下ajax.ajaxMethod使用方法

使用AjaxMethod可以在客户端异步调用服务端方法,简单地说就是在JS里调用后台.cs文件里的方法,做一些JS无法做到的操作,如查询数据库. 使用AjaxMethod要满足一下几点: 1.如果还没有ajax.dll文件,就先下载一个来 2.将ajax.dll添加到项目引用中:在VS的解决方案资源管理器中右键点击项目名称--“添加项目引用”--浏览,找到ajax.dll确定 3.webCofig中<httpHandlers>加上<add verb="POST,GET"

asp.net下ajax.ajaxMethod使用方法(转)

使用AjaxMethod可以在客户端异步调用服务端方法,简单地说就是在JS里调用后台.cs文件里的方法,做一些JS无法做到的操作,如查询数据库 使用AjaxMethod要满足一下几点: 1.如果还没有ajax.dll文件,就先下载一个来 2.将ajax.dll添加到项目引用中:在VS的解决方案资源管理器中右键点击项目名称--“添加项目引用”--浏览,找到ajax.dll确定 3.webCofig中<httpHandlers>加上<add verb="POST,GET"

Ajax前端调后台方法

后台对当前页面类进行注册 Ajax.Utility.RegisterTypeForAjax(typeof(Login));//Login 当前类名 在方法上面加 [Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)] 前端调用时用 Login.方法名();//可写参数

WebFrom模式下前台通过Ajax.Method调用后台方法

1.先添加引用:Ajax.dll; 2.进行配置: 在 system.web 里边添加如下配置: <httpHandlers>   <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>  </httpHandlers> 在system.web 外边添加如下配置: <system.webServer>

利用ajax.dll类库文件实现无刷新

使用这种方法前需要配置相应的环境 1.引用ajax.dll文件 2.在web.config添加如下: <httpHandlers>   <add path="ajax/*.ashx" verb="POST,GET" type="Ajax.PageHandlerFactory, Ajax"/>   <!--<add path="ajaxpro/*.ashx" verb="POST,G

js调用后台代码的几种方式

JS调用后台方法大全 javascript函数中执行C#代码中的函数:方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中;2.在前台写一个js函数,内容为document.getElementById("btn1").click();3.在前台或后台调用js函数,激发click事件,等于访问后台c#函数: 方法二:1.函数声明为public后台代码(把public改成protected也可以)publicstringss(){return("

AjaxPro使用方法

无意中看到同事用AjaxPro用,看到很不错,特长是前后台传输数据特别方便. 最好的教材就是拿到就可以用,方便大家. 以前数据传输用FORM提交,或者在前台用JASON拼接然后通过AJAX方式提交.总之要写好多代码,很不方便.要么页面刷新,要么总是写一件重复代码. AjaxPro的方便之处就是前台不需要写太多的代码,可以直接跟后台方法进行访问,中间用数据JASON数据传输这一切她都已经帮你做了.网上找了几个教程都感觉不错.现在我把她从配置到例子整理下分享给大家. 一.配置AjaxPro: 1.