02Modify.html 修改
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>修改班级</title> <style type="text/css"> #tbList { border:1px solid #0094ff; border-collapse:collapse; 300px; margin:50px auto; } #tbList th,td{ border:1px solid #0094ff; padding:5px; } </style> </head> <body> <form method="post" action="02Modify.ashx"> <table id="tbList"> <tr> <td>班级名称:</td> <td><input type="text" id="txtName" name="txtName" value="@{name}" /></td> </tr> <tr> <td>班级人数:</td> <td><input type="text" id="txtCount" name="txtCount" value="@{count}" /></td> </tr> <tr> <td colspan="2"> <input type="submit" value="确定" /> <input type="button" id="btnCancel" value="取消" onclick="window.location='01List.ashx'" /> </td> </tr> </table> <input type="hidden" name="txtId" value="@{id}" /> </form> </body> </html>
02Modify.ashx
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.SqlClient; namespace AspNetAshx { /// <summary> /// 修改的 班级数据 /// </summary> public class _02Modify : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; //重要:因为当前页面,有两个业务: //1.根据id展示要修改的数据(get请求) //2.是接受用户在表单中修改后的新的数据,并更新到数据库中(post请求) if (context.Request.HttpMethod.ToLower() == "get")//get过来,执行业务一 { BusOne();//查询并生成 修改页面 } else//post过来,执行业务二 { DoModify(); } } #region 1.0业务一、查询并生成 修改页面 -void BusOne() /// <summary> /// 查询并生成 修改页面 /// </summary> void BusOne() { //1.获取 要修改的 班级id string strId = HttpContext.Current.Request.QueryString["id"]; //2.验证 id 是否合法 if (CommonHelper.IsNum(strId))//验证通过 { //3.根据id 查询 要修改的 班级数据 SqlDataReader dr = SqlHelper.ExcuteReader("select * from Classes where CId = " + strId); //if (dr.HasRows) //{ //此处 不使用 while的原因是因为 我们根据id查询,肯定只有一行! if (dr.Read())//调用Read的时候就去数据库的 【查询结果集】 里 获取了一行数据 { //4.读取修改页面的模版 string strHtml = CommonHelper.GetFileContent("02Modify.html"); //5.用 数据库中读取到的数据 替换 掉模版里的 3个占位符 strHtml = strHtml.Replace("@{name}", dr["CName"].ToString())//将 班级名 替换到 班级名 文本框的value中 .Replace("@{count}", dr["CCount"].ToString())//将 班级人数 替换到 班级人数 文本框的value中 .Replace("@{id}", dr["CId"].ToString());//将 班级id 替换到 班级id 隐藏域的value中 //6.将生成的修改页面 html 返回给浏览器 HttpContext.Current.Response.Write(strHtml); } //关闭 读取器,自动关闭连接对象 dr.Close(); //} } else {//4.验证失败 //通过输出js 先让浏览器用户看到错误消息,然后再直接通过js控制浏览器跳转到 列表页面(再次请求服务器的列表页面) HttpContext.Current.Response.Write("<script>alert('您的参数有误!您什么意思~~!');window.location='01List.ashx';</script>"); } } #endregion #region 2.0 业务二、执行修改 -void DoModify() /// <summary> /// 业务二、执行修改 /// </summary> void DoModify() { //1.获取用户表单post提交的数据 string strName = HttpContext.Current.Request.Form["txtName"].Trim(); string strCount = HttpContext.Current.Request.Form["txtCount"]; string strId = HttpContext.Current.Request.Form["txtId"]; //2.验证数据 if (string.IsNullOrEmpty(strName) || !CommonHelper.IsNum(strCount) || !CommonHelper.IsNum(strId)) { CommonHelper.WriteJs("对不起,您输入的数据格式错误~请仔细检查~~", "02Modify.ashx?id=" + strId); } else { //3.更新到数据库中 SqlParameter[] paras = { new SqlParameter("Cname",strName), new SqlParameter("CCount",strCount), new SqlParameter("Cid",strId) }; int res = SqlHelper.ExcuteNoneQuery("update Classes set CName=@Cname,CCount=@CCount where CId =@Cid", paras); if (res > 0) { //删除成功 CommonHelper.WriteJs("修改成功~!", "01List.ashx"); } else { //删除失败 CommonHelper.WriteJs("修改失败~!如果您是美女,请联系管理员~~~qq:111111", "02Modify.ashx?id=" + strId); } } } #endregion public bool IsReusable { get { return false; } } } }