概述

ASP.NET MVC中的异步用途非常广泛,操作起来也非常简单。前台请求异步请求 Controller下的Action 方法,后端返回ActionResult 即可。但是在ASP.NET WebForm中使用异步就比较麻烦,下面介绍两种处理WebForm异步请求的形式。若前端Ajax异步请求不熟悉的请参考:http://www.w3school.com.cn/jquery/ajax_ajax.asp

通过一般处理程序的形式处理异步请求

1.新建一个WebForm 窗体

2.创建表单元素

<body>
<div>
用户名:<input type="text" id="name"><br />
密 码:<input type="text" id="pwd" />
</div>
<div>
<input type="button" value="提交" onclick="javascript:submit();" />
</div>
</body>

3.新建一个一般处理程序

4.前台点击 "提交" 按钮 往后台异步请求,并弹出后台返回的文本数据。

 1 <script type="text/javascript">
2 var submit = function () {
3 var name = $("#name").val();
4 var pwd = $("#pwd").val();
5 $.ajax({
6 url: "WebFormAjaxDemo.ashx",
7 type: "post",
8 data: { "name": name, "pwd": pwd, "requestMethod": "register" },
9 dataType: "text",
10 async: false,
11 beforeSend: function (XHR) {
12 },
13 complete: function (XHR, TS) {
14 },
15 success: function (data) {
16 alert(data);
17 }
18
19 });
20 };
21 </script>

5.后台处理前台发送的请求,并返回处理的结果。

 1 public void ProcessRequest(HttpContext context)
2 {
3 // 接收前台要请求的方法
4 string requestMethod = context.Request["requestMethod"];
5
6 // 存储返回结果
7 string returnResult = string.Empty;
8 // 这种方式可以处理前台的多种异步请求
9 switch (requestMethod)
10 {
11 case "register":
12 {
13 returnResult = Register();
14 } break;
15 default:
16 { returnResult = "no method"; } break;
17
18 }
19 // 返回处理结果
20 context.Response.Write(returnResult);
21 }
 1 /// <summary>
2 /// 注册
3 /// </summary>
4 /// <returns></returns>
5 public string Register()
6 {
7 // 获取表单数据
8 var name = HttpContext.Current.Request["name"];
9 var pwd = HttpContext.Current.Request["pwd"];
10
11 if (pwd == "123")
12 {
13 return "ok";
14 }
15 return "no";
16 }

6.测试异步请求

6.1

6.2

通过访问WebForm 页面的后端代码处理异步请求(CodeBehind),而不需要重新创建页面。(和上面的操作类似,只要稍改动下)

1.修改前台异步请求访问的路径

 1 <script type="text/javascript">
2 var submit = function () {
3 var name = $("#name").val();
4 var pwd = $("#pwd").val();
5 $.ajax({
6 url: "WebFormAjaxDemo.aspx",
7 type: "post",
8 data: { "name": name, "pwd": pwd, "requestMethod": "register" },
9 dataType: "text",
10 async: false,
11 beforeSend: function (XHR) {
12 },
13 complete: function (XHR, TS) {
14 },
15 success: function (data) {
16 alert(data);
17 }
18
19 });
20 };
21 </script>

2.当前页面的后端处理

 1  protected void Page_Load(object sender, EventArgs e)
2 {
3 // 判断是否有异步请求过来(不能用 isPostBack 判断 【ispostback结果是根据隐藏域是否为空判断的】)
4 if (!string.IsNullOrEmpty(Request["requestMethod"]))
5 {
6 string returnResult = string.Empty;
7 switch (Request["requestMethod"]) // 请求的方法
8 {
9 case "register":
10 {
11 returnResult = Register();
12 } break;
13 default:
14 { returnResult = "no method"; } break;
15 }
16 Response.Write(returnResult);
17 Response.End(); // 结束输出流,否则会包含整个页面
18 }
19 }
 1  /// <summary>
2 /// 注册
3 /// </summary>
4 /// <returns></returns>
5 public string Register()
6 {
7 var name = HttpContext.Current.Request["name"];
8 var pwd = HttpContext.Current.Request["pwd"];
9
10 if (pwd == "123")
11 {
12 return "ok";
13 }
14 return "no";
15 }

3.测试结果

3.1

3.2

总结

通过"一般处理程序"处理WebForm 前台的异步请求,效率要比通过CodeBehind 的形式高,因为一般处理程序要少走了页面生命周期(创建控件树、页面初始化、处理viewstate、load......),但是几乎每个前台页面要处理异步请求都要新建一个一般处理程序,使得项目中文件太多。

通过codeBehind的形式,可以让当前的前台提交给自己的后台类去处理,虽然效率要低很多,但是使得页面比较整洁。通过codeBehind 的形式处理异步请求的关键在于往输出流输出数据后要Response.End 结束输出,不然就会Load页面了。

ASP.NET WebForm 之 Ajax 请求后端处理的更多相关文章

  1. asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染

    在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不 ...

  2. C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求

    C# 动态创建SQL数据库(二) 使用Entity Framework  创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...

  3. ASP.NET WebForm中异步请求防止XSRF攻击的方法

    在ASP.NET MVC中微软已经提供了如何防止跨域攻击的方法.对于传统Webfrom中使用Handler来接受ajax的Post请求数据,如何来防止XSRF攻击呢.这里给大家提供一个简单地方法,和M ...

  4. ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询

    js前台对datagrid的定义代码,如下 mygrid = $('#mytable').datagrid({ fit: true, //自动大小 height: 'auto', rownumbers ...

  5. 解决Django中在.js文件中用ajax请求后端,找不到CSRF问题

    function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != ...

  6. WebForm 页面ajax 请求后台页面 方法

    function ReturnOperation(InventoryID) { //入库 接口 if (confirm('你确认?')) { $.ajax({ type: "post&quo ...

  7. 使用ajax请求后端程序时,关于目标程序路径问题

    这里涉及到和PHP中类似的问题,有待更新!!!

  8. phpStudy4——前端页面使用Ajax请求并解析php返回的json数据

    项目需求: 在html页面显示所有用户列表信息. 需求分析: 1. html页面使用ajax向后端php请求用户数据 2. php脚本查询数据库,并将查询后的结果以json格式返回前端html页面 3 ...

  9. jQuery获取表格隐藏域与ajax请求数据结合显示详情

    0.表格样式

随机推荐

  1. Glib之主事件循环

    介绍 GLib和GTK+应用的主事件循环管理着所有事件源.这些事件的来源有很多种比如文件描述符(文件.管道或套接字)或超时.新类型的事件源可以通过g_source_attach()函数添加. 为了让多 ...

  2. 多层mvc,thikphp进阶

    程序员,是一种生活态度. 我尽忠恪守,我努力进取,热衷于解决问题,希望得到同样的回报. 我遇到问题,将所有的力量用在解决问题,而不是抱怨,推卸责任上. ------------------------ ...

  3. git 命令总结(转)

    结构图: <1> Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库   # 在当前目录新建 ...

  4. 云搜索服务在APP搜索场景的应用

    搜索无处不在,尤其是在移动互联的今天.无论是社交,电商,还是视频等APP中,搜索都已经在其中扮演了重要的角色.作为信息的入口,搜索能帮用户从海量信息中找到想要的信息.在APP搜索的典型场景如下: ●  ...

  5. Qt 学习之路 2(3):Hello, world!

     豆子  2012年8月22日  Qt 学习之路 2  107条评论 想要学习 Qt 开发,首先要搭建 Qt 开发环境.好在现在搭建 Qt 开发环境还是比较简单的.我们可以到 Qt 官方网站找到最新版 ...

  6. EA888发动机系列

    EA888发动机是一个发动机系列,有很多型号,比如从二代机开始,二代机叫做Evolution 2,简称EVO2,分别有CEA:1.8T 横置:CCU:1.8T 纵置:CGM:2.0T横置,CRH:2. ...

  7. IDEA 文档注释 乱码 终极... 解决方案

    idea bin 目录 下           phpstorm64.exe.vmoptions  最后一行添加  : -Dfile.encoding=UTF-8

  8. BAPC 2014:Button Bashing(暴力+bfs)

    题意: 给出n,m,代表微波炉有n个按钮,要求达到总时间为m 然后给出n个数,代表n个按钮能增加的时间,问最少几步,能够使得按出的总时间大于等于要求的时间,并且相差最小 输出最小的步数与相差的最小值 ...

  9. SecureCRT 遇到一个致命的错误且必须关闭

    1.将报错路径中VanDyke文件夹内的东西删除掉2.运行regedit,在注册表中将HKEY_LOCAL_MACHINA中SOFTWARE里的VanDyke删除3.注册表中打开HKEY_CURREN ...

  10. shell脚本学习(1)

    格式: #!/bin/bash                              :标志一个shell脚本 #Filename:first_shell.sh          :文件名称 #a ...