码迷,mamicode.com
首页 > Web开发 > 详细

【mvc学习】给小白们的第一个MVC学习Demo之Login篇

时间:2015-06-24 22:26:22      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

上次的Demo,只做了一个查询列表的功能,而且用的是ajax,今天我们来看下原味的mvc的过程,以登录为例,我们依旧是用sqlite数据库

按上次的步骤,我们已经有了一个可以跑的项目,接下来就是添加Login的Action和View以及Modals

STEP 1 : 我们需要数据库支持,添加用户表users,字段如下

技术分享

添加用户数据:insert into users(account,password,name) values(‘123‘,‘123‘,‘白茶程序员‘)

 

STEP 2 :添加Modals

namespace MvcDemo.Models
{
    public class User
    {
        public int ID { get; set; }

        public string Name { get; set; }

        public string Account { get; set; }

        public string Password { get; set; }
    }
}

STEP 3 : 添加登录显示界面Action到HomeController

 public ActionResult Login()
        {          
            
            return View();
        }

STEP 4 :添加视图,快速的方法是在Action的名字(也就是Login)上右键

技术分享

在登录界面上完成基本的表单,表单每项的名字对应Modal的名字,指定Action为GoLogin

@{
    ViewBag.Title = "Login";
}

<h2>Login</h2>

<div>
    <form action="GoLogin">
        <div>
            
            @Html.TextBox("Account", "", new { placeholder = "请输入用户名" }) 
        </div>
        <div>
            
            @Html.TextBox("Password", "", new { placeholder = "请输入密码" }) 
        </div>
        <input type="submit" />
    </form>
</div>

STEP 5 . 在HomeController中添加GoLogin的Action

  /// <summary>
        /// 执行登录操作
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public ActionResult GoLogin(User user)
        {
            User findUser = null;
            //用参数的方式,可以避免非法字符,以及sql注入的问题,sqlserver 请用@符号
            string sql = "select * from users where account =:account ";
            //使用using方式,如果发生异常,将会执行Displose方法,conn的Dispose方法会关闭连接
            using (SQLiteConnection conn = new SQLiteConnection(System.Configuration.ConfigurationManager.ConnectionStrings["sqliteConnection"].ConnectionString))
            {
                 conn.Open();
                //执行查询
                SQLiteCommand cmd = new SQLiteCommand(sql, conn);
                cmd.Parameters.Add(new SQLiteParameter(":account", user.Account));               
                SQLiteDataReader dr = cmd.ExecuteReader();
                //将查询的数据填充到User实体
                if (dr.Read())
                {
                    findUser = new User() { Name=dr["name"].ToString(), Account = dr["account"].ToString(), Password = dr["password"].ToString() };
                }
                conn.Close();
            }
            string Msg = null;
            if (findUser == null) Msg = "账号不存在!";
            else if (findUser.Password != user.Password) Msg = "密码错误!";           


            if(Msg ==null)
            {
                Msg = "登录成功,欢迎回来 , " + findUser.Name;
                return RedirectToAction("Index", new { message = Msg });
            }
            else
            {
                return RedirectToAction("Login", new { user = user, message = Msg });
            }
            
        }

RedirectToAction("Index", new { message = Msg })是登录成功后跳转,并且传递参数 , 失败的话,还是跳转到Login并且传递失败原因和Modal(输入的内容)


登录界面如下:

技术分享

验证成功后,不成功,会显示失败原因

技术分享

源代码我放到了github上面: https://github.com/colys/TeaLearning  , 可以用git下,或者直接download zip  . 强烈推荐git,不会的去学一下,是源代码管理的工具

 

【mvc学习】给小白们的第一个MVC学习Demo之Login篇

标签:

原文地址:http://www.cnblogs.com/colys/p/4598739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!