MVC4+三层简单登录(带数据库)

**

这几天一直在学习MVC。于是做了一个简单的登录界面,带简单前端样式。

百度云连接:链接:https://pan.baidu.com/s/1YFzWV9JZc72Krdlwgu3-VA
提取码:r21t
效果图:
在这里插入图片描述
数据表结构就懒的发了,直接根据实体类写就可以,就几个字段很简单。
1.目录结构如下:
在这里插入图片描述
2.建立数据访问类,由于只是简单的登录,所以只需要写一个简单的返回DataReader对象即可。webConfig连接数据库那一套就不再赘述了。

 //在此之前需要先定义连接字符串
        private static readonly string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();
 public static SqlDataReader getReader(string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                conn.Open();
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

3.编写实体类,在这里注意User是Sql关键字,所以一般不为表名,如果要使用加上[]即可。

/// <summary>
    /// 用户登录实体类
    /// </summary>
    public class Users
    {
        public int Id { get; set; }
        public string LoginId { get; set; }
        public string LoginPwd { get; set; }
        public string AdminName { get; set; }
    }

4.数据层编写。

 public Users getLogin(Users objUser)
        {
            StringBuilder objBuilder = new StringBuilder();
            objBuilder.Append("select AdminName from ");
            objBuilder.Append("Users where LoginId = '{0}'");
            objBuilder.Append(" and LoginPwd = '{1}'");

            string sql = string.Format(objBuilder.ToString(),objUser.LoginId,objUser.LoginPwd);
            try
            {
                SqlDataReader objReader = SqlHerper.getReader(sql);
                
                if (objReader.Read())
                {

                    objUser.AdminName = objReader["AdminName"].ToString();
                    
                }
                else {
                        objUser = null;
                }
                
            }
            catch (Exception ex)
            {
                throw new Exception("出错"+ ex.Message);
            }
            return objUser;
            

        } 

5.BLL层编写,由于逻辑简单,所以就只是起到一个传递数据的作用,写不写它是无所谓的,但是既然是三层,所以还是写了。

 public Users getLogin(Users objUser)
        {
            LoginService objService = new LoginService();
            objUser = objService.getLogin(objUser);
            if (objUser != null)
            {
            //这里是将用户名密码正确后把姓名保留到Session中,方便读取
                HttpContext.Current.Session["CurrentAdmin"] = objUser;
            }
            return objUser;
        }

6.控制器

  [HttpPost]
        public ActionResult getLogin(Users objUser)
        {
            objUser = new LoginManager().getLogin(objUser);

            if (objUser != null)
            {
                return Content("<script>alert('登录成功');document.location='" + Url.Action("Index","Test") +"'</script>");
            }
            else
            {
                return Content("<script>alert('登录失败');document.location='" + Url.Action("Index","Login") +"'</script>");
            }
            }

7.前端实现,由于代码繁杂,就节选form表单里的。这里是使用了强类型视图,因为表单的name和实体类属性名一致,会自动映射获取数据。

  @using (Html.BeginForm("getLogin", "Login", new { @class = "signup_form_form" })) { 
                    <div class="signup_account" id="signup_account">
                        <div class="form_user">
                            <input type="text" name="LoginId" placeholder="用户名" id="signup_email"></div>
                       @* @Html.TextBox("LoginId")*@
                        <div class="form_password">
                            <input type="password" name="LoginPwd" placeholder="密码" id="signup_password"></div>
                    </div>
                    <input  type="submit" id="signup_forms_submit" value="登录"/>

                     }

8.效果图(注册功能未做)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44227858/article/details/89508933