一用户
1.1用户注册
1.2用户登录
1.3修改密码
修改密码会用到一个UserChangePassword 模型类,先添加UserChangePassword类
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/// <summary>
/// 用户修改密码模型
/// </summary>
[NotMapped]
public class UserChangePassword
{
/// <summary>
/// 原密码
/// </summary>
[Display(Name = "原密码")]
[Required(ErrorMessage = "×")]
[StringLength(20, MinimumLength = 6, ErrorMessage = "×")]
[DataType(DataType.Password)]
public string Password { get; set; }
/// <summary>
/// 新密码
/// </summary>
[Display(Name = "新密码", Description = "6-20个字符。")]
[Required(ErrorMessage = "×")]
[StringLength(20, MinimumLength = 6, ErrorMessage = "×")]
[DataType(DataType.Password)]
public string NewPassword { get; set; }
/// <summary>
/// 确认密码
/// </summary>
[Display(Name = "确认密码", Description = "再次输入密码。")]
[Compare("NewPassword", ErrorMessage = "×")]
[DataType(DataType.Password)]
public string ConfirmPassword { get; set; }
}
|
用到了数据库的更新,先打开UserRepository.cs 修改Update函数
?
|
1
2
3
4
5
6
7
8
9
10
11
12
|
/// <summary>
/// 更新用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public override bool Update(User user)
{
dbContext.Users.Attach(user);
dbContext.Entry<User>(user).State = System.Data.EntityState.Modified;
if (dbContext.SaveChanges() > 0) return true;
else return false;
}
|
在修改密码时需要查出用户信息并更新,需要添加Find(string UserName) 函数
?
|
1
2
3
4
5
6
7
8
9
|
/// <summary>
/// 查找用户
/// </summary>
/// <param name="UserName">用户名</param>
/// <returns></returns>
public User Find(string UserName)
{
return dbContext.Users.SingleOrDefault(u => u.UserName == UserName);
}
|
好了打开UserController,添加ChangePassword Action
- ///<summary>
- ///修改密码
- ///</summary>
- ///<returns></returns>
- [UserAuthorize]
- publicActionResultChangePassword()
- {
- returnView();
- }
- [HttpPost]
- [UserAuthorize]
- publicActionResultChangePassword()
- {
- returnView();
- }
添加强类型(UserChangePassword)视图,在视图中添加三个文本框,修改后的视图代码
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
@model Ninesky.Models.UserChangePassword
@{
ViewBag.Title = "修改密码";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="banner">
<img src="~/Skins/Default/Images/banner.jpg" />
</div>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="form">
<dl>
<dt>修改密码</dt>
<dd>
<div class="label">@Html.LabelFor(model => model.Password):</div>
<div class="ctrl">@Html.PasswordFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
@Html.DisplayDescriptionFor(model => model.Password)
</div>
</dd>
<dd>
<div class="label">@Html.LabelFor(model => model.NewPassword):</div>
<div class="ctrl">@Html.PasswordFor(model => model.NewPassword)
@Html.ValidationMessageFor(model => model.NewPassword)
@Html.DisplayDescriptionFor(model => model.NewPassword)
</div>
</dd>
<dd>
<div class="label">@Html.LabelFor(model => model.ConfirmPassword):</div>
<div class="ctrl">@Html.PasswordFor(model => model.ConfirmPassword)
@Html.ValidationMessageFor(model => model.ConfirmPassword)
@Html.DisplayDescriptionFor(model => model.ConfirmPassword)
</div>
</dd>
<dd>
<div class="label"></div>
<div class="ctrl">
<input type="submit" value="修改密码" />@Html.ValidationMessage("Message")
</div>
</dd>
</dl>
<div class="clear"></div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
|
修改UserController中[HttpPost]方式的ChangePassword()以实现修改密码,修改完成的代码如下:
- [HttpPost]
- [UserAuthorize]
- publicActionResultChangePassword(UserChangePassworduserChangePassword)
- {
- userRsy=newUserRepository();
- if(userRsy.Authentication(UserName,Common.Text.Sha256(userChangePassword.Password))==0)
- {
- var_user=userRsy.Find(UserName);
- if(_user==null)
- {
- Error_e=newError{Title="修改密码失败",Details="修改密码时,系统查询不到用户信息",Cause=Server.UrlEncode("<li>用户在修改密码界面停留的时间过长,登录信息已失效。</li><li>系统错误。</li>"),Solution=Server.UrlEncode("<li>返回<ahref='"+Url.Action("ChangePassword","User")+"'>修改密码</a>页面,输入正确的信息后重新注册</li><li>联系网站管理员</li>")};
- returnRedirectToAction("Error","Prompt",_e);
- }
- _user.Password=Common.Text.Sha256(userChangePassword.NewPassword);
- if(userRsy.Update(_user))
- {
- Notice_n=newNotice{Title="成功修改密码",Details="您已经成功修改密码,请牢记您的新密码!",DwellTime=5,NavigationName="登陆页面",NavigationUrl=Url.Action("Login","User")};
- returnRedirectToAction("Notice","Prompt",_n);
- }
- else
- {
- Error_e=newError{Title="修改密码失败",Details="修改密码时,更新数据库失败!",Cause=Server.UrlEncode("<li>系统错误。</li>"),Solution=Server.UrlEncode("<li>返回<ahref='"+Url.Action("ChangePassword","User")+"'>修改密码</a>页面,输入正确的信息后重新注册</li><li>联系网站管理员</li>")};
- returnRedirectToAction("Error","Prompt",_e);
- }
- }
- else
- {
- ModelState.AddModelError("Password","原密码不正确,请重新输入");
- returnView();
- }
- }
在上面的代码中用到了一个UserName属性,这个是在UserController添加的属性用于返回Cookie中保存的用户名
?
|
1
2
3
4
5
6
7
8
9
10
|
/// <summary>
/// 获取用户名
/// </summary>
public string UserName {
get {
HttpCookie _cookie = Request.Cookies["User"];
if (_cookie == null) return "";
else return _cookie["UserName"];
}
}
|
好了,浏览器中预览一下

测试一下,OK,大功告成!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:http://www.cnblogs.com/mzwhj/archive/2012/11/01/2748310.html
相关文章
猜你喜欢
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-25 66
-
Win10任务栏无响应怎么办?Win10任务栏无响应的解决方法
2025-05-27 53 -
2025-05-29 19
-
2025-05-25 35
-
2025-05-25 90
热门评论

