一丶使用三层架构创建一个简单的MVC登录操作
1.首先,创建一个项目以及BLL层、DAL层、Entity层,如图一:
图一
2.创建一个数据库如图二:
图二
3基本工作已做好,接下来就编BLL层、DAL层、Entity层。
3.1先编Entity。Entity实体层(不属于三层架构的任意一层)定义一个类,主要用来保存以及传递数据库的信息。比如以图而的数据库为列,实体层代码如下:
<pre name="code" class="csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Entity
{
public class UserInfo
{
public int ID { get; set; }
[Required(ErrorMessage="用户名不能为空")]
public string UserName { get; set; }
[Required(ErrorMessage = "密码不能为空")]
public string UserPWD { get; set; }
}
}
这样就定义了一个实体层(定义的字段和数据库里的一样)。
3.2 DAL层。DAL只提供基本的数据访问,在其内定义增删改查!比如登录(查)代码如下:
using Entity;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DAL
{
public class UserService
{
//获取用户信息
public UserInfo GetUser(string userName)
{
string sql ="select * from userinfo where UserName=@username ";
SqlParameter[] param = new SqlParameter[]{
new SqlParameter("@username",userName),
};
// 执行
UserInfo user =new UserInfo ();
using (SqlDataReader sdr = SqlHelper.ExecuteReader(CommandType.Text, sql, param))
{
while(sdr.Read())
{
user.UserName = sdr["UserName"].ToString();
user.UserPWD = sdr["UserPwd"].ToString();
}
return user;
}
}
}
}
首先得引入Entity,其次,需要注意的是必须把UserService这个类定义为public类型的否者BLL层访问不到。代码就不一一解读了,多是一些很基础的语句。注:1.SqlHelper是一个已经封装好的类,专门执行sql语句。这里也可以自己写sql执行语句。2.须在web.config 里配置链接字符串。
3.3BLL层:
<pre name="code" class="csharp">using DAL;
using Entity;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL
{
public class UserManager
{
public bool Login(string userName, string userPWD)
{
// 业务逻辑层 调用 数据访问层
UserService service = new UserService();
UserInfo user = service.GetUser(userName);
if (user == null || user.UserPWD != userPWD)
{
return false;
}
else
{
return true;
}
}
}
}
首先还是得引入Entity和DAL。。。 负责处理业务逻辑。通过获取UI传来的用户指令,执行业务逻辑,在需要访问数据源的时候,直接交个DAL进行处理。处理完成后,返回必要数据给UI。其实BLL层很简单,
4.设计简单的登陆页面
<pre name="code" class="html"><body>
<div>
<%=Html.ValidationMessage("action") %>
<form action="<%=Url.Content("~/Home/DoLogin") %>" method="post">
<table>
<tr>
<td>用户名</td>
<td>
<input name="username" />
</td>
<td><%=Html.ValidationMessage("UserName") %></td>
</tr>
<tr>
<td>用户密码</td>
<td>
<input name="userpwd" type="password" />
</td>
<td><%=Html.ValidationMessage("UserPwd") %></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="登陆" />
</td>
</tr>
</table>
</form>
</div>
</body>
5.输入账号密码,点击提交按钮,将值交到控制器的DoLogin:
public ActionResult DoLogin(string username,string userpwd)
{
// model 验证失败
if (!ModelState.IsValid)
{
return View();
}
else
{
if (new UserManager().Login(username, userpwd))
{
return Content("<script>alert('登入成功!!!');location.href='index';</script>");
}
else {
ModelState.AddModelError("action", "用户名或密码错误!!!");
return View();
}
}
6.运行结果:
二丶实现增删改查
其实学会了登录功能后其他
增删改查功能都是差不多的。只不过就是换了个sql语句,换汤不换药。我就不一一介绍了。