您的位置:首页 > 其它

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

2015-06-22 15:01 246 查看
第一步,在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" />   
<img id="valiCode" style="cursor: pointer;" src="/ValidateCodeImg/Get" title="看不清,点击换一张" alt="看不清?请点我" onclick="imgCodes(this);" />
  
<a href="javascript:imgCodes();">看不清楚,点击这里</a>

</div>
</td>
</tr>
<tr>
<td height="35">
 
</td>
<td>
<input type="submit" id="btnlogin" value="登录" class="btn btn-success"/>     
<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>

}    
角色:@if (Session["jName"]!=null)
{
<span>@Session["jName"].ToString()</span>
}
</span>
</td>
</tr>
</table>


显示结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: