第一步,在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(), --用户名
@epwd nvarchar() --密码
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="" align="center" cellpadding="" cellspacing="" style=" margin-top:150px;">
<tr>
<td width="31%" height="" class="login-text02">
用户名:<br />
</td>
<td width="69%">
<input type="text" name="txtname" id="txtname" @*value="@Model.EName" *@/>
</td>
</tr>
<tr>
<td height="" class="login-text02">
密 码:<br />
</td>
<td>
<input type="password" name="txtpwd" id="txtpwd" @*value="@Model.EPwd"*@ />
</td>
</tr>
<tr>
<td height="" 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="">
&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="" cellspacing="" cellpadding="">
<tr>
<td>
<img src="@Url.Content("~/Content/images/uesr.gif")" width="" height="">
<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的值绑定在页面上的更多相关文章

  1. jquery代码修改input的value值,而页面上input框的值没有改变的解决办法

    问题描述: 在搜索框中输入一些字符,并且点击搜索框右边的五角星做收藏操作时,打开的弹框中Save Search:后面的input中的值被赋值了外面搜索框的值,但是当此次操作完成之后,再次做同样的操作, ...

  2. Spring MVC中Session的正确用法<转>

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

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

    前言 这一节翻译一篇有关Session State性能问题的文章,非一字一句翻译. 话题 不知道我们在真实环境中是否用到了Session State特性,它主要用来当在同一浏览器发出多个请求时来存储数 ...

  4. 【转】Spring MVC中Session的正确用法之我见

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

  5. ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例

    在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...

  6. Asp.net Mvc 自定义Session (二)

    在 Asp.net Mvc 自定义Session (一)中我们把数据缓存工具类写好了,今天在我们在这篇把 剩下的自定义Session写完 首先还请大家跟着我的思路一步步的来实现,既然我们要自定义Ses ...

  7. MVC之Session State性能

    ASP.NET MVC之Session State性能问题(七)   前言 这一节翻译一篇有关Session State性能问题的文章,非一字一句翻译. 话题 不知道我们在真实环境中是否用到了Sess ...

  8. Spring MVC中Session的正确用法之我见

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

  9. MVC框架中的值提供机制(三)

    在MVC框架中NameValueCollectionValueProvider采用一个NameValueCollection作为数据源,DictionnaryValueProvider的数据源类型自然 ...

随机推荐

  1. secureCRT会话导入到xshell中的方法

    官方给出了一个工具,sessionimporter.exe 不过软件有点老了,导入的会话路径和xshell默认的会话路径不一致,导致导入后,xshell没有导入的会话信息 sessionimporte ...

  2. winrt简单克隆对象

    public MapPoint Copy()//MapPoint克隆方法 { MapPoint p = new MapPoint();//这是我自定义的对象 //利用反射获得类成员 FieldInfo ...

  3. Other Linker Flags到底是什么

    一.问题描述 在项目开发中用到百度地图,有时候在工程中会报“方法找不到”的错误(unrecognized selector sent to instance). 二.问题分析 首先,要说明一下Othe ...

  4. vux 表单提交数据 返回后页面跳转

    ps:仅作参考

  5. sql之left join、right join、inner join的区别

    sql之left join.right join.inner join的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括 ...

  6. MediaElement.js对不同浏览器的支持

    目前已经有很多html5播放器可以使用,使用html5播放器可以轻松的在页面中插入媒体视频,从而使我们的web页面变得更加丰富多彩,所以今天向大家推荐一款非常优秀的html5播放器MediaEleme ...

  7. C#运算符

    运算符 1.算数运算符 赋值运算符 等号在C#中并不是表示相等的意思,而是表示赋值,把等号右边的值赋值给 等号左边的变量 由等号连接的表达式,叫做赋值表达式.我们要求等号两边的数据类型必须一 致. 2 ...

  8. hive创建索引

    索引是hive0.7之后才有的功能,创建索引需要评估其合理性,因为创建索引也是要磁盘空间,维护起来也是需要代价的 创建索引 hive> create index [index_studentid ...

  9. UML大战需求分析——阅读笔记02

    类图是理解面向对象思想的强有力工具,也是业务概念模型分析中最常用的一种UML图.对开发人员来说,并不是对每一个业务流程都很熟练,在客户那里传达过来的需求资料中,有很多术语会把思绪搞晕,他们之间错综复杂 ...

  10. 9.JAVA中的正则表达式

    一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ?          #{0,1}-?有一个-或者没有 \\           #表示一个" ...