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

第一步,在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 [email protected] 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>

显示结果:

时间: 2024-10-18 12:03:20

在mvc中将session的值绑定在页面上的相关文章

点击编辑,进入编辑页面并把值渲染到页面上

1. //服务中 //获取测验列表 getListData(): Promise<FormData[]>{ console.log(this.listUrl) return this.http.get(this.listUrl) .toPromise() .then(response => { console.log(response.json().data) return response.json().data as FormData[]; }) .catch(this.handle

003.ASP.NET MVC集中管理Session

原文链接:http://www.codeproject.com/Tips/790387/Session-in-ASP-NET-MVC 1.前言 今天有得有失啊,看到这篇,专心记下里面的精华吧 2.一般在Web程序中,使用Session可能会有以下的用途 a.检查用户是否登录 b.保存权限信息 c.保存临时数据 有时,我们会频繁地改变Session保存的对象,现在,我们尝试在一个Controller中集中管理Session,这样可以应用于其它的Controller,达到重用的效果 3.在开始之前,

Spring MVC中Session的正确用法&lt;转&gt;

Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的设计模式遍及各处,使得其框架虽然学习曲线陡峭,但 一旦掌握则欲罢不能.初学者并不需要过多了解框架的实现原理,随便搜一下如何使用“基于注解的controller”就能很快上手,而一些书籍诸如 “spring in action”也给上手提供了非常优良的选择. 网上的帖子多如牛毛,中文的快速上手,英文的

MVC之Session State性能

ASP.NET MVC之Session State性能问题(七) 前言 这一节翻译一篇有关Session State性能问题的文章,非一字一句翻译. 话题 不知道我们在真实环境中是否用到了Session State特性,它主要用来当在同一浏览器发出多个请求时来存储数据,在现在我们更多的为了避免整个页面刷新,Web应用程序更多倾向于利用高扩展性的Ajax,但是不知道我们是否注意到当我们使用Session数据多次请求MVC上的Action方法时产生的性能问题呢? 将Session放入上下文中(Put

ASP.NET MVC之Session State性能问题(七)

前言 这一节翻译一篇有关Session State性能问题的文章,非一字一句翻译. 话题 不知道我们在真实环境中是否用到了Session State特性,它主要用来当在同一浏览器发出多个请求时来存储数据,在现在我们更多的为了避免整个页面刷新,Web应用程序更多倾向于利用高扩展性的Ajax,但是不知道我们是否注意到当我们使用Session数据多次请求MVC上的Action方法时产生的性能问题呢? 将Session放入上下文中(Put Session into the Context) 在进行代码演

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/0309/19/834950_359080244.shtml

.net和MVC中的json值和List&lt;T&gt;和DataTable的一些转换

1.List<T>集合转换为Json值 List<ReportModel> dtList = new List<ReportModel>(); JsonResult json = new JsonResult(); json = Json(dtList);//直接采用Json()方法就可以了,不过必须要加载MVC 2.DataTable直接转换为Json值,不过必须加载Newtonsoft.dll这个程序集,大家应该在网上找的到. .net和MVC中的json值和Lis

Asp.net MVC 中Controller返回值类型ActionResult

内容转自 http://blog.csdn.net/pasic/article/details/7110134 Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonActionAttribute特性的(NoAction) 不能被重载 必须返回ActionResult类型 如: [csharp] view pl

mvc中session的几点注意事项

session在controller中传递出现空值 session在controller传值到view也是空值 session时默认引用的是System.Web.Mvc.Controll.session,可能这个session不能传递, 所以解决方法就是详细定义session,我们可以定义System.Web.HttpContext.Current.Session可以解决这个问题