您的位置:首页 > 运维架构 > 网站架构

使用三层架构实现简单的MVC登陆操作!并实现基本的增删改查功能!!

2015-03-19 13:56 1176 查看

一丶使用三层架构创建一个简单的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语句,换汤不换药。我就不一一介绍了。

            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐