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

在mvc中将session的值绑定在页面上

时间:2015-06-22 16:22:02      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

 

第一步,在SqlServer数据库中创建存储过程,查询的是用户名(员工姓名)所扮演的角色:

if exists(select * from sys.objects where name=proc_select_Login)
begin
    drop procedure proc_select_Login
end
go
create procedure proc_select_Login
    @ename nvarchar(20),   --用户名
    @epwd  nvarchar(20)    --密码
as
    select j.JName from EmployInfo,JobInfo j where EName=@ename and EPwd=@epwd
go

第二步,在Model中业务逻辑EmployeeDao类下创建SelectLogin方法,使用ExecuteScalar()方法查询出用户名(员工姓名)的角色,返回的是字符串类型:

 /// <summary>
        /// 管理员登录
        /// </summary>
        /// <param name="ename"></param>
        /// <param name="epwd"></param>
        /// <returns></returns>
        public string SelectLogin(string ename, string epwd)
        {
            string sql = "proc_select_Login";
            SqlCommand cmd = new SqlCommand(sql, con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@ename", ename);
            cmd.Parameters.AddWithValue("@epwd", epwd);
            con.Open();
            string jName = string.Empty;
            jName = Convert.ToString(cmd.ExecuteScalar());
            con.Close();
            return jName;
        }

第三步,在Controller控制器中创建名称为EmployeeController的.cs文件,调用EmployeeDao类下SelectLogin()方法,进行员工登录验证。登录成功,进行页面跳转,并把用户名(员工姓名)和其角色存储到Session中,

注意:string txtCheck 是接受页面中写入的验证码,且与页面中验证码input标签中的name必须一致。

/// <summary>
    /// 员工登录验证
    /// </summary>
    /// <param name="collection"></param>
    /// <param name="txtCheck">验证码</param>
    /// <returns></returns>
    [HttpPost]
    public ActionResult Login(FormCollection collection,string txtCheck)
    {
           
        //接收页面输入的用户名和密码
        employ.EName = collection["txtname"];
        employ.EPwd = collection["txtpwd"];

        string str = Convert.ToString(this.TempData["Code"]).ToLower();//接收存在临时数据中的验证码
        string jName = dao.SelectLogin(employ.EName, employ.EPwd);

        if (jName!=string.Empty)
        {
            if (str != txtCheck.ToLower())
            {
                ViewBag.ErrorMsg = "验证码错误";
                return View(employ);
            }
            else
            {
                //使用Session进行储存
                this.Session["eName"] = employ.EName;

                //使用session进行储存
                this.Session["jName"] = jName;

                //this.Session.Add("employ", employ);
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ViewBag.ErrorMsg = "用户名或密码错误";
            return View(employ);
        }        
    }
}

第四步,创建登录页面,我这里嵌入的是html代码:

<body>
    <form action="/Employee/Login" method="post">
    <table border="0" align="center" cellpadding="10" cellspacing="5" style=" margin-top:150px;">
        <tr>
            <td width="31%" height="35" class="login-text02">
                用户名:<br />
            </td>
            <td width="69%">
                <input type="text" name="txtname" id="txtname" @*value="@Model.EName" *@/>
            </td>
        </tr>
        <tr>
            <td height="35" class="login-text02">
                密 码:<br />
            </td>
            <td>
                <input type="password" name="txtpwd" id="txtpwd" @*value="@Model.EPwd"*@  />
            </td>
        </tr>
        <tr>
            <td height="35" class="login-text02">
                验证码:<br />
            </td>
            <td>
                <div style="width:400px;">
                <input type="text" name="txtCheck" />&nbsp;&nbsp;&nbsp;
                <img id="valiCode" style="cursor: pointer;" src="/ValidateCodeImg/Get" title="看不清,点击换一张" alt="看不清?请点我" onclick="imgCodes(this);" />
                &nbsp;&nbsp;
                <a href="javascript:imgCodes();">看不清楚,点击这里</a>

                </div>
            </td>
        </tr>
        <tr>
            <td height="35">
                &nbsp;
            </td>
            <td>
                <input type="submit" id="btnlogin" value="登录" class="btn btn-success"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="reset" value="重 置" class="btn btn-warning"/>
                <label style="color:Red;">@ViewBag.ErrorMsg</label>
            </td>
        </tr>
    </table>
    </form>
</body>

第五步,在Controller中创建控制器命名为HomeController,接受之前Session中存储的用户和其角色:

 public ActionResult Top(FormCollection collecton)
        {
       
            string eName = Convert.ToString(this.Session["eName"]);//接收存在session中的验证码

            string jName = this.Session["jName"].ToString();
            return View();
        }

第六步,为HomeController创建页面,绑定Session中存储的存储的用户名和其角色:

<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td>
            <img src="@Url.Content("~/Content/images/uesr.gif")" width="14" height="14">
            <span class="STYLE2"> 
                当前登录用户:@if (Session["eName"] != null)
                                {
                                        <span>@Session["eName"].ToString()</span>
                                                              
                                }&nbsp;&nbsp;&nbsp;&nbsp;
                角色:@if (Session["jName"]!=null)
                    {
                        <span>@Session["jName"].ToString()</span>
                    }
            </span>
        </td>
    </tr>
</table>

显示结果:

技术分享

 

在mvc中将session的值绑定在页面上

标签:

原文地址:http://www.cnblogs.com/cghjy/p/4593311.html

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