ASP.NET WebForm 之 Ajax 请求后端处理
概述
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 请求后端处理的更多相关文章
- asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染
在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不 ...
- C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求
C# 动态创建SQL数据库(二) 使用Entity Framework 创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...
- ASP.NET WebForm中异步请求防止XSRF攻击的方法
在ASP.NET MVC中微软已经提供了如何防止跨域攻击的方法.对于传统Webfrom中使用Handler来接受ajax的Post请求数据,如何来防止XSRF攻击呢.这里给大家提供一个简单地方法,和M ...
- ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询
js前台对datagrid的定义代码,如下 mygrid = $('#mytable').datagrid({ fit: true, //自动大小 height: 'auto', rownumbers ...
- 解决Django中在.js文件中用ajax请求后端,找不到CSRF问题
function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != ...
- WebForm 页面ajax 请求后台页面 方法
function ReturnOperation(InventoryID) { //入库 接口 if (confirm('你确认?')) { $.ajax({ type: "post&quo ...
- 使用ajax请求后端程序时,关于目标程序路径问题
这里涉及到和PHP中类似的问题,有待更新!!!
- phpStudy4——前端页面使用Ajax请求并解析php返回的json数据
项目需求: 在html页面显示所有用户列表信息. 需求分析: 1. html页面使用ajax向后端php请求用户数据 2. php脚本查询数据库,并将查询后的结果以json格式返回前端html页面 3 ...
- jQuery获取表格隐藏域与ajax请求数据结合显示详情
0.表格样式
随机推荐
- Git master branch has no upstream branch的解决
Git master branch has no upstream branch的解决 在push代码时,出现“git master branch has no upstream branch”问题的 ...
- 【bzoj2818】: Gcd 数论-欧拉函数
[bzoj2818]: Gcd 考虑素数p<=n gcd(xp,yp)=p 当 gcd(x,y)=1 xp,yp<=n满足条件 p对答案的贡献: 预处理前缀和就好了 /* http://w ...
- linux 远程连接ssh提示 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决
Linux ssh 远程登录到其他机器上时,有时会出现登不进去,并弹出如下类似提示的情况: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- P4199 万径人踪灭 FFT + manacher
\(\color{#0066ff}{ 题目描述 }\) \(\color{#0066ff}{输入格式}\) 一行,一个只包含a,b两种字符的字符串 \(\color{#0066ff}{输出格式}\) ...
- 6.House Robber(简单版抢银行)
Level: Easy 题目描述: You are a professional robber planning to rob houses along a street. Each house ...
- Eclipse导入GitHub项目两处报错处理
1.项目出现Could not calculate build plan:pligin 错误解决办法: 删除本地.m2仓库中 org.apache.maven.plugins:maven-resour ...
- Linode安装环境
Ubuntu 18 密码:Fenghaiyan35 netstat -plnt //查看所有文件 sudo apt-get install apac ...
- java web 简单的权限管理
spring ,springMvc ,mybatis 简单权限管理 其实只需要3张表..admin_group ,function,group 表
- 江西财经大学第一届程序设计竞赛 A
链接:https://www.nowcoder.com/acm/contest/115/A来源:牛客网 题目描述 "挤需体验五番钟,里造会挨上这款游戏!" 怎么可能嘛!当我是傻子吗 ...
- TCP通讯模型简单示例
1. TCP通讯模型 2. 服务器端 ① 创建socket,用函数socket() ② 绑定IP地址.端口号等信息到socket上,用函数bind() ③ 设置允许的最大连接数,用函数listen() ...