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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/agonie201218/article/details/44456847

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


            



阅读更多

没有更多推荐了,返回首页