ASP.NET笔记(一)——一般处理程序
来源:互联网 发布:杀肖数据统计资料区 编辑:程序博客网 时间:2024/06/05 02:32
1. 一般处理程序
1. 1 一般处理程序初步
创建步骤:
创建ASP.NET空Web应用程序
添加-新建项-一般处理程序,命名为DemoHandler.ashx,结果如下:
<% WebHandler Language="C#" Class="DemoHandler" %>using System;using System.Web;public class DemoHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { //给前端浏览器输出字符串 context.Response.ContentType = "text/plain"; //字符串的内容为"Hello World" context.Response.Write("Hello World"); } public bool IsReusable { get { return false; } }}
若要输出一个网页,代码如下:
context.Response.ContentType = "text/html";context.Response.Write("<html><head></head><body><h1>你好ASP.NET</h1></body></html>");
输出一个文件(比如图片):
context.Response.ContentType = "image/jpg";//相对路径的image文件夹下context.Response.WriteFile("dlf.jpg");
在代码编辑界面直接 右键-在浏览器中打开,便可将DemoHandler.ashx打开。
1.2 一般处理程序制作列表页
目的:将数据库中的某个表展示在浏览器上
步骤:
添加-新建项-一般处理程序,命名为ListHandler.ashx
编辑配置文件Web.config,配置数据库连接字符串:
<connectionStrings> <add name="personDb" connectionString="Data Source=HP002;Initial Catalog=wjb;Integrated Security=True"/> </connectionStrings>
<% WebHandler Language="C#" Class="ListHandler" %>using System;using System.Configuration;using System.Data.SqlClient;using System.Text;using System.Web;public class ListHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/html";//显示内容为HTML //使用StringBuilder拼接处html页面的各个标签 StringBuilder sb = new StringBuilder(); sb.Append("<html>" + "<head></head>" + "<body>" + "<a href='AddPersonInfo.html'>添加</a><br/><br/>"); #region 拼接table //拼接表头 sb.Append("<table border=1>" + "<tr>" + "<th>ID</th>" + "<th>NAME</th>" + "<th>AGE</th>" + "<th>操作</th>"+ "</tr>"); //读取数据库中的数据 string connStr = ConfigurationManager.ConnectionStrings["personDb"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("select * from Tbl_Person2;", conn)) { using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { //拼接字符串(每行的数据) sb.AppendFormat("<tr>" + "<td>{0}</td>" + "<td>{1}</td>" + "<td>{2}</td>" + "<td><a href='ShowDetail.ashx?id={0}'>详情</a></td>"+ "</tr>", reader["id"], reader["name"], reader["age"] ); } } } } sb.Append("</table>"); #endregion sb.Append("</body></html>"); context.Response.Write(sb.ToString());//将html写进来 } public bool IsReusable { get { return false; } }}
1.3 一般处理程序——详情
目的:上面的表中增加一列,点击该列的td会显示该列数据的详细信息
步骤:
在1.2的代码中,拼接表格的时候增加一列(详见1.2中的代码):
"<td><a href='ShowDetail.ashx?id={0}'>详情</a></td>"
新建一个名为ShowDetail.ashx的一般处理程序
为了拼接html页面时少些代码,新建一个HTML页面作为模板,命名为ShowDetailTemp.html,在其body中添加如下代码:
<table> @StrTrBody<!--这是一个占位符--></table>
然后ShowDetail.ashx的代码如下:
public class ShowDetail : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/html"; //首先要拿到当前id string id= context.Request.QueryString["id"];//拿到ShowDetail.ashx?id=1 中的id int nId=int.Parse(id); string connStr = ConfigurationManager.ConnectionStrings["personDb"].ConnectionString; string sql = "select * from Tbl_Person2 where id=@id"; StringBuilder sb=new StringBuilder(); using (SqlDataAdapter adapter=new SqlDataAdapter(sql,connStr)) { //传递id参数 adapter.SelectCommand.Parameters.AddWithValue("@id", nId); //填充一个表格 DataTable dt=new DataTable(); adapter.Fill(dt); sb.AppendFormat("<tr>" + "<td>id:</td>" + "<td>{0}</td>" + "</tr>", dt.Rows[0]["id"]);//id信息(第0行,名为id的列) sb.AppendFormat("<tr>" + "<td>name:</td>" + "<td>{0}</td>" + "</tr>", dt.Rows[0]["name"]);//name信息 sb.AppendFormat("<tr>" + "<td>height:</td>" + "<td>{0}</td>" + "</tr>", dt.Rows[0]["height"]);//height信息 sb.AppendFormat("<tr>" + "<td>age:</td>" + "<td>{0}</td>" + "</tr>", dt.Rows[0]["age"]);//age信息 sb.AppendFormat("<tr>" + "<td>gender:</td>" + "<td>{0}</td>" + "</tr>", dt.Rows[0]["gender"]);//gender信息 } //用File.ReadAllText()方法,把Html模板读出来,然后替换Html里的数据占位符 //把相对于网站根目录的路径转成磁盘上的绝对路径(reason:因为IO流只能识别绝对路径) string path= context.Request.MapPath("/ShowDetailTemp.html"); string textTemp= File.ReadAllText(path); string result= textTemp.Replace("@StrTrBody", sb.ToString());//替换掉占位符 context.Response.Write(result); } public bool IsReusable { get { return false; } }}
1.4 一般处理程序——添加
目的:在ListHandler.ashx页面增加一个a标签:"添加",点击跳转到添加页面,实现给表格添加新内容的功能
步骤:
新建一个名为AddPersonInfo.html的页面,里面有一个表单action="ProcessAdd.ashx":
<body> <form id="formAdd" action="ProcessAdd.ashx" method="get"> <table> <tr> <td>姓名:</td> <td> <input type="text" name="txtName"/> </td> </tr> <tr> <td>身高:</td> <td> <input type="text" name="txtHeight"/> </td> </tr> <tr> <td>年龄:</td> <td> <input type="text" name="txtAge"/> </td> </tr> <tr> <td>性别:</td> <td> <input type="text" name="txtGender"/> </td> </tr> <tr> <td colspan="2"> <input type="submit" value="添加" /> </td> </tr> </table> </form></body>
在ListHandler.ashx中拼接一个a标签,链接指向AddPersonInfo.html
<a href='AddPersonInfo.html'>添加</a>
新建一个名为ProcessAdd.ashx的一般处理程序,编写向表格增加内容的代码:
<% WebHandler Language="C#" Class="ProcessAdd" %>using System;using System.Configuration;using System.Data;using System.Data.SqlClient;using System.Web;public class ProcessAdd : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/html"; //拿到提交来的数据 string txtName = context.Request.QueryString["txtName"]; string txtHeight = context.Request.QueryString["txtHeight"]; string txtAge =context.Request.QueryString["txtAge"]; string txtGender = context.Request.QueryString["txtGender"]; //接下来到数据库进行插入操作 string connStr = ConfigurationManager.ConnectionStrings["personDb"].ConnectionString; string sql = "insert into Tbl_Person2 values(@name,@height,@age,@gender)"; using (SqlConnection conn=new SqlConnection(connStr)) { using (SqlCommand cmd=new SqlCommand(sql,conn)) { conn.Open(); cmd.Parameters.AddRange(new SqlParameter[] { new SqlParameter("name",SqlDbType.VarChar,50) {Value = txtName}, new SqlParameter("height",SqlDbType.Int) {Value = txtHeight}, new SqlParameter("age",SqlDbType.Int) {Value = txtAge}, new SqlParameter("gender",SqlDbType.VarChar,50) {Value = txtGender} }); cmd.ExecuteNonQuery(); } } //插入数据成功之后,跳转到起始页ListHandler.ashx context.Response.Redirect("ListHandler.ashx"); } public bool IsReusable { get { return false; } }}
阅读全文
1 0
- ASP.NET笔记(一)——一般处理程序
- ASP.NET学习笔记(二)——一般处理程序之图片上传
- 不拖控件ASP.NET——一般处理程序
- asp.net一般处理程序
- asp.net 一般处理程序
- Asp.net-一般处理程序
- asp.net 一般处理程序
- asp.net 一般处理程序
- 黑马程序员之asp.net学习笔记:一般处理程序(*.ashx)小结
- 网上看到的 asp.net 一般处理程序(.ashx)
- 《ASP.NET本质论》一般处理程序
- ASP.NET ASHX 一般处理程序教程
- ASP.NET ASHX 一般处理程序教程
- asp.net一般处理程序(1)准备工作
- asp.net一般处理程序(3)新增
- Asp.net 一般处理程序+扩展
- 初识ASP.NET---一般处理程序
- ASP.NET ASHX 一般处理程序教程
- golang之下划线(_)之语义说明
- java垃圾回收机制
- 最全Pycharm教程(20)——Pycharm编辑器功能之模板应用
- 深入BFC块级格式化上下文
- java排序算法之 --- 选择排序
- ASP.NET笔记(一)——一般处理程序
- 微信公众号开发(八)用户管理
- button 的点击事件不响应
- 【变量引用】面向对象程序设计上机练习四(变量引用)
- 数据结构第二周项目3(2)--体验复杂度之汉诺塔
- MySQL MMM高可用方案
- C#梳理【预处理指令】
- 垃圾回收机制之触发Full GC的情况
- UVa 7037 ACM/ICPC 2014 Xian(网络流+最大密度子图)