一、常用技术概括及介绍

1. SQL server:处理数据库的设计
2. asp.net 
3. html            :前端网页
4. css     :网页的布局设计
5. JavaScript  :能够更好的操作页面
6. jQuery        :
7. ajax    :处理局部刷新请求

二、分层介绍 (类库)
1.bll:业务层、
2.dal:数据层、
3.model:对应数据库的表、
4.common:公共方法
5.webapp:新建的app

6.webapp自带的配置文件

创建好之后如下:

三、实现步骤
1. 数据层中两个类,对应封装增删改查语句

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
namespace CZBK.ItcastProject.DAL
{
public class SqlHelper
{
//getdatetable方法获取整个表 //参数1.sql语句 2. 判断是sql语句还是存储过程 3. 传递的参数
private static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //读取配置文件中的字符串
public static DataTable GetDataTable(string sql,CommandType type,params SqlParameter[]pars)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlDataAdapter apter = new SqlDataAdapter(sql, conn))
{
if (pars != null)
{
apter.SelectCommand.Parameters.AddRange(pars);
}
apter.SelectCommand.CommandType = type;
DataTable da = new DataTable();
apter.Fill(da);
return da;
}
}
}
//获取受影响行数,ExecuteNonQuery 主要用在插入,更新,删除 一般情况用在查询的时候返回的是-1
public static int ExecuteNonquery(string sql, CommandType type, params SqlParameter[] pars)
{
      
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (pars != null)
{
cmd.Parameters.AddRange(pars);
}
cmd.CommandType = type;
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
}
}
 using CZBK.ItcastProject.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
namespace CZBK.ItcastProject.DAL
{
public class UserInfoDal
{
/// <summary>
/// 获取用户列表
/// </summary>
/// <returns></returns>
public List<UserInfo> GetList()
{
string sql = "select * from UserInfo";
DataTable da = SqlHelper.GetDataTable(sql, CommandType.Text);
List<UserInfo> list = null;
if (da.Rows.Count > )
{
list = new List<UserInfo>();
UserInfo userInfo = null;
foreach (DataRow row in da.Rows)
{
userInfo = new UserInfo();
LoadEntity(userInfo, row);
list.Add(userInfo);
}
}
return list;
}
/// <summary>
/// 添加用户信息
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public int AddUserInfo(UserInfo userInfo)
{
string sql = "insert into UserInfo(UserName,UserPass,RegTime,Email) values(@UserName,@UserPass,@RegTime,@Email)";
SqlParameter[] pars = {
new SqlParameter("@UserName",SqlDbType.NVarChar,),
new SqlParameter("@UserPass",SqlDbType.NVarChar,),
new SqlParameter("@RegTime",SqlDbType.DateTime),
new SqlParameter("@Email",SqlDbType.NVarChar,)
};
pars[].Value = userInfo.UserName;
pars[].Value = userInfo.UserPass;
pars[].Value = userInfo.RegTime;
pars[].Value = userInfo.Email;
return SqlHelper.ExecuteNonquery(sql, CommandType.Text, pars);
} /// <summary>
/// 根据ID删除用户的信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public int DeleteUserInfo(int id)
{
string sql = "delete from UserInfo where ID=@ID";
SqlParameter[] pars = {
new SqlParameter("@ID",SqlDbType.Int)
};
pars[].Value = id;
return SqlHelper.ExecuteNonquery(sql,CommandType.Text,pars);
} /// <summary>
/// 修改用户信息
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public int EditUserInfo(UserInfo userInfo)
{
string sql = "update UserInfo set UserName=@UserName,UserPass=@UserPass,RegTime=@RegTime,Email=@Email where ID=@ID";
SqlParameter[] pars = {
new SqlParameter("@UserName",SqlDbType.NVarChar,),
new SqlParameter("@UserPass",SqlDbType.NVarChar,),
new SqlParameter("@RegTime",SqlDbType.DateTime),
new SqlParameter("@Email",SqlDbType.NVarChar,),
new SqlParameter("@ID",SqlDbType.Int)
};
pars[].Value = userInfo.UserName;
pars[].Value = userInfo.UserPass;
pars[].Value = userInfo.RegTime;
pars[].Value = userInfo.Email;
pars[].Value = userInfo.Id;
return SqlHelper.ExecuteNonquery(sql, CommandType.Text, pars);
} /// <summary>
/// 根据用户的编号,获取用户的信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public UserInfo GetUserInfo(int id)
{
string sql = "select * from UserInfo where ID=@ID";
SqlParameter[] pars = {
new SqlParameter("@ID",SqlDbType.Int)
};
pars[].Value = id;
DataTable da=SqlHelper.GetDataTable(sql, CommandType.Text, pars);
UserInfo userInfo = null;
if (da.Rows.Count > )
{
userInfo = new UserInfo();
LoadEntity(userInfo, da.Rows[]);
}
return userInfo;
} private void LoadEntity(UserInfo userInfo, DataRow row)
{
userInfo.UserName = row["UserName"] != DBNull.Value ? row["UserName"].ToString() : string.Empty;
userInfo.UserPass = row["UserPass"] != DBNull.Value ? row["UserPass"].ToString() : string.Empty;
userInfo.Email = row["Email"] != DBNull.Value ? row["Email"].ToString() : string.Empty;
userInfo.Id = Convert.ToInt32(row["ID"]);
userInfo.RegTime = Convert.ToDateTime(row["RegTime"]);
}
}
}

具体增删改查部分

model层中添加与列相同的表字段。示例代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CZBK.ItcastProject.Model
{
public class UserInfo
{
public int Id { get; set; }
public string UserName { get; set; }
public string UserPass { get; set; }
public DateTime RegTime { get; set; }
public string Email { get; set; }
}
}

2. 业务层中写一个调用对象方法的方法

 using CZBK.ItcastProject.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CZBK.ItcastProject.DAL;
namespace CZBK.ItcastProject.BLL
{
public class UserInfoService
{
UserInfoDal UserInfoDal = new UserInfoDal();
/// <summary>
/// 返回数据列表
/// </summary>
/// <returns></returns>
public List<UserInfo> GetList()
{
return UserInfoDal.GetList();
}
/// <summary>
/// 添加数据
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public bool AddUserInfo(UserInfo userInfo)
{
return UserInfoDal.AddUserInfo(userInfo)>;
}
/// <summary>
/// 根据ID删除用户的信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public bool DeleteUserInfo(int id)
{
return UserInfoDal.DeleteUserInfo(id) > ;
}
/// <summary>
/// 修改用户信息
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public bool EditUserInfo(UserInfo userInfo)
{
return UserInfoDal.EditUserInfo(userInfo) > ;
}
/// <summary>
/// 根据用户的编号,获取用户的信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public UserInfo GetUserInfo(int id)
{
return UserInfoDal.GetUserInfo(id);
} }
}

UserInfoService

3. 新建一个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>
<link href="Css/tableStyle.css" rel="stylesheet" />
<script src="Js/jquery-1.7.1.js"></script>
<script type="text/javascript">
$(function () {
$(".deletes").click(function () {
if (!confirm("确定要删除吗?")) {
return false;
}
});
});
</script>
</head> <body>
<a href="AddUserInfo.html">添加</a>
<table>
<tr><th>编号</th><th>用户名</th><th>密码</th><th>邮箱</th><th>时间</th><th>删除</th><th>详细</th><th>编辑</th></tr>
@tbody </table>
</body>
</html>

UserInfoList.html

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

using CZBK.ItcastProject.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web; namespace CZBK.ItcastProject.WebApp
{
/// <summary>
/// UserInfoList 的摘要说明
/// </summary>
public class UserInfoList : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
//new一个业务层的类库对象
BLL.UserInfoService UserInfoService = new BLL.UserInfoService();
//调用获取全部列表的方法
List<UserInfo> list= UserInfoService.GetList();
//快捷操作字符串的方法
StringBuilder sb = new StringBuilder();
//将遍历到的数据拼接成一个新的字符串
foreach (UserInfo userInfo in list)
{
sb.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td><a href='DeleteUser.ashx?id={0}' class='deletes'>删除</a></td><td><a href='ShowDetail.ashx?uid={0}'>详细</a></td><td><a href='ShowEdit.ashx?id={0}'>编辑</a></td></tr>",userInfo.Id,userInfo.UserName,userInfo.UserPass,userInfo.Email,userInfo.RegTime);
}
//读取模板文件的路径
string filePath = context.Request.MapPath("UserInfoList.html");
//读取其中全部的字节
string fileCotent = File.ReadAllText(filePath);
//替换字符串
fileCotent = fileCotent.Replace("@tbody",sb.ToString());
context.Response.Write(fileCotent);
} public bool IsReusable
{
get
{
return false;
}
}
}
}

UserInfoList.ashx

ASP.net 网站开发知识点总结的更多相关文章

  1. 整合Spring.net到asp.net网站开发中初探

    整合Spring.net到asp.net网站开发中初探 http://www.veryhuo.com 2009-10-21 烈火网 投递稿件 我有话说   Spring提供了一个轻量级的用于构建企业级 ...

  2. asp.net 网站开发流程总结

    由于这学期要做asp.net的网站开发,导师让我们在前期做详细的计划说明,时间安排.由于网站开发流程不知道,以及需要学什么指示都是盲懂,所以计划安排需在了解大致流程之后才能做出来,一下是询问同学和在网 ...

  3. asp.net -mvc框架复习(1)-ASP.NET网站开发概述

    1.网站开发的基本步骤: 2.网站开发的需要的知识结构 (1)网站开发前台页面技术 页面设计:HTML  .CSS+DIV 页面特效:JavaScript.jQery (2)OOP编程核心公共技能 C ...

  4. CGI、ASP、PHP、JSP、 ASP.NET网站开发语言比较

    一.主流网站开发语言的简介及优缺点. 现在主流的网站开发语言主要包括cgi.asp.php.asp.net.jsp等. HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持. (一)  ...

  5. ASP.NET网站开发中的配置文件

    来源:微信公众号CodeL 1.配置文件层次分类 Machine.config:  对.netframework整体的配置 web.config(framework目录下):  对所有项目所公有的应用 ...

  6. 简述ASP.NET网站开发步骤

    新建解决方案 清除解决方案 重新生成解决方案 发布应用程序 设置配置文件 重命名配置文件 发布后生成的文件 IIS安装 安装完成后,输入http://localhost/出现 打开IIS 添加自己的网 ...

  7. C#ASP.NET网站开发步骤

    1. 创建项目ASP.NET Web 应用程序. 2. 选择"Web 窗体"模板,然后单击 "确定" 按钮创建项目. 3. 在解决方案资源管理器中,右键添加we ...

  8. 发布ASP.NET网站时的设置

    在ASP.NET网站开发完成之后,一般都要进行发布,然后再使用. 点击“目标位置”后的按钮可以选择将网站发布到的位置,有“本地.本机IIS.FTP站点.远程网站站点”四个选项. 另外,发布网站时还有四 ...

  9. MVC 6 电商网站开发实战

    [原创] ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API 标签: Web API MVC6 创建web API | 博主:powertoolsteam     ASP.NE ...

随机推荐

  1. 计算概论(A)/基础编程练习2(8题)/7:整数的个数

    #include<stdio.h> int main() { ] = {}; // 输入k个正整数 scanf("%d",&k); // 循环读入和进行算术 w ...

  2. Java笔记 #04# 类的初始化顺序补充

    参考java中的类的初始化顺序详解 package org.sample; class Bread { Bread() { System.out.println("Bread()" ...

  3. rsync 同步文件如何指定属主属组和权限

    rsync daemon 同步数据时,若想同时指定权限和属主属组,可以做如下配置: [test1] uid = admin gid = admin incoming chmod = Dug=rwx,D ...

  4. 微信h5支付“网站域名ICP备案主体与商户号主体不一致”的解决方法,H5微信支付 授权函下载

    如下图所示: 微信h5支付“网站域名ICP备案主体与商户号主体不一致”: 需提交H5微信支付 授权函 下载地址:https://download.csdn.net/download/a72400815 ...

  5. php 获取最近一周,一个月,一年

    <?php date_default_timezone_set('PRC'); /** * 获取最近一周,一个月,一年 * */ function getLatelyTime($type = ' ...

  6. android studio下载地址

    AndroidStudio3.0 下载地址——高速下载 https://www.androiddevtools.cn/   2017年08月20日 22:41:09 qq风轻云淡 阅读数:5559   ...

  7. Nginx:论高并发,在座各位都是渣渣

    NGINX 在网络应用中表现超群,在于其独特的设计.许多网络或应用服务器大都是基于线程或者进程的简单框架,NGINX突出的地方就在于其成熟的事件驱动框架,它能应对现代硬件上成千上万的并发连接. NGI ...

  8. vsCode设置中文

    1.安装软件之后,关闭欢迎界面,Ctrl+shift+p打开命令窗口,输入lang,选择configuration display language,改为 "locale":&qu ...

  9. 古堡算式|2012年蓝桥杯B组题解析第二题-fishers

    (4')古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:"ABCDE应该代表不同的数字,问号也代表某个数字!" 华生: ...

  10. tomcat使用spring-loaded实现应用热部署

    springloaded官方说明: Spring Loaded is a JVM agent for reloading class file changes whilst a JVM is runn ...