当前位置:Gxlcms > asp.net > MVC4制作网站教程第二章 用户修改资料2.4

MVC4制作网站教程第二章 用户修改资料2.4

时间:2021-07-01 10:21:17 帮助过:18人阅读

一、用户 
1.1用户注册 
1.2用户登录 
1.3修改密码 
1.4修改资料 

在用户登陆成功后要跳转到一个页面,暂且叫做用户中心吧。在【UserController】添加[default] action 

  1. [UserAuthorize]
  2. public ActionResult Default()
  3. {
  4. userRsy = new UserRepository();
  5. var _user = userRsy.Find(UserName);
  6. return View(_user);
  7. }

添加相应对应强类型视图 

  1. @model Ninesky.Models.User
  2. @{
  3. ViewBag.Title = "首页";
  4. Layout = "~/Views/Layout/_User.cshtml";
  5. }
  6. <div class="leftnav">这里左侧导航列表</div>
  7. <div class="workspace">
  8. <div class ="Nav">您现在的位置: 用户首页</div>
  9. <div>@Model.UserName
  10. <br />
  11. @Model.GroupId
  12. </div>
  13. </div>

现在要把左侧导航列表做出来,在视图的User文件夹上点右键新建局部视图PartialPersonalNav

  1. <ul>
  2. <li>@Html.ActionLink("用户首页","Default","User")</li>
  3. <li>@Html.ActionLink("修改信息","ChangeInfo","User")</li>
  4. <li>@Html.ActionLink("修改密码","ChangePassword","User")</li>
  5. <li>@Html.ActionLink("退出系统","Logout","User")</li>
  6. </ul>

将default.cshtml中“这里左侧导航列表”替换为@Html.Partial("PartialPersonalNav")。浏览器中打开,导航列表显示出来了。 

现在开始做修改用户资料了。在【UserController】添加[ChangeInfo] action 

  1. [UserAuthorize]
  2. public ActionResult ChangeInfo()
  3. {
  4. userRsy = new UserRepository();
  5. var _user = userRsy.Find(UserName);
  6. return View(_user);
  7. }
 

添加修改资料的处理 action

  1. [HttpPost]
  2. [UserAuthorize]
  3. public ActionResult ChangeInfo(User user)
  4. {
  5. userRsy = new UserRepository();
  6. if(userRsy.Authentication(UserName,Ninesky.Common.Text.Sha256(user.Password))==0)
  7. {
  8. var _user = userRsy.Find(UserName);
  9. _user.Gender = user.Gender;
  10. _user.Email = user.Email;
  11. _user.QQ = user.QQ;
  12. _user.Tel = user.Tel;
  13. _user.Address = user.Address;
  14. _user.PostCode = user.PostCode;
  15. if (userRsy.Update(_user))
  16. {
  17. Notice _n = new Notice { Title = "修改资料成功", Details = "您已经成功修改资料!", DwellTime = 5, NavigationName = "用户首页", NavigationUrl = Url.Action("Default", "User") };
  18. return RedirectToAction("UserNotice", "Prompt", _n);
  19. }
  20. else
  21. {
  22. Error _e = new Error { Title = "修改资料失败", Details = "在修改用户资料时时,更新的资料未能保存到数据库", Cause = "系统错误", Solution = Server.UrlEncode("<li>返回<a href='" + Url.Action("ChangeInfo", "User") + "'>修改资料</a>页面,输入正确的信息后重新操作</li><li>联系网站管理员</li>") };
  23. return RedirectToAction("UserError", "Prompt", _e);
  24. }
  25. }
  26. else
  27. {
  28. ModelState.AddModelError("Password","密码错误!");
  29. return View();
  30. }
  31. }

aciton上右键添加强类型视图,修改视图里自动生成代码,完成后。如下: 

  1. @model Ninesky.Models.User
  2. @{
  3. ViewBag.Title = "修改个人资料";
  4. Layout = "~/Views/Layout/_User.cshtml";
  5. }
  6. <div class="leftnav">@Html.Partial("PartialPersonalNav")</div>
  7. <div class="workspace">
  8. <div class="Nav">您现在的位置: 用户首页</div>
  9. <div>
  10. @using (Html.BeginForm())
  11. {
  12. @Html.ValidationSummary(true)
  13. <fieldset>
  14. <legend>修改资料</legend>
  15. @Html.HiddenFor(model => model.UserId)
  16. <ul>
  17. <li>
  18. <div class="editor-label">
  19. @Html.LabelFor(model => model.UserName)
  20. </div>
  21. <div class="editor-field">
  22. @Html.DisplayFor(model => model.UserName)
  23. </div>
  24. </li>
  25. <li>
  26. <div class="editor-label">
  27. @Html.LabelFor(model => model.Password)
  28. </div>
  29. <div class="editor-field">
  30. @Html.Password("Password")
  31. @Html.ValidationMessageFor(model => model.Password)
  32. 输入正确的密码才能修改资料。
  33. </div>
  34. </li>
  35. <li>
  36. <div class="editor-label">
  37. @Html.LabelFor(model => model.Gender)
  38. </div>
  39. <div class="editor-field">
  40. @Html.RadioButtonFor(model => model.Gender, 0) 男
  41. @Html.RadioButtonFor(model => model.Gender, 1) 女
  42. @Html.RadioButtonFor(model => model.Gender, 2) 保密
  43. </div>
  44. </li>
  45. <li>
  46. <div class="editor-label">
  47. @Html.LabelFor(model => model.Email)
  48. </div>
  49. <div class="editor-field">
  50. @Html.EditorFor(model => model.Email)
  51. @Html.ValidationMessageFor(model => model.Email)
  52. @Html.DisplayDescriptionFor(model => model.Email)
  53. </div>
  54. </li>
  55. <li>
  56. <div class="editor-label">
  57. @Html.LabelFor(model => model.QQ)
  58. </div>
  59. <div class="editor-field">
  60. @Html.EditorFor(model => model.QQ)
  61. @Html.ValidationMessageFor(model => model.QQ)
  62. @Html.DisplayDescriptionFor(model => model.QQ)
  63. </div>
  64. </li>
  65. <li>
  66. <div class="editor-label">
  67. @Html.LabelFor(model => model.Tel)
  68. </div>
  69. <div class="editor-field">
  70. @Html.EditorFor(model => model.Tel)
  71. @Html.ValidationMessageFor(model => model.Tel)
  72. @Html.DisplayDescriptionFor(model => model.Tel)
  73. </div>
  74. </li>
  75. <li>
  76. <div class="editor-label">
  77. @Html.LabelFor(model => model.Address)
  78. </div>
  79. <div class="editor-field">
  80. @Html.EditorFor(model => model.Address)
  81. @Html.ValidationMessageFor(model => model.Address)
  82. @Html.DisplayDescriptionFor(model => model.Address)
  83. </div>
  84. </li>
  85. <li>
  86. <div class="editor-label">
  87. @Html.LabelFor(model => model.PostCode)
  88. </div>
  89. <div class="editor-field">
  90. @Html.EditorFor(model => model.PostCode)
  91. @Html.ValidationMessageFor(model => model.PostCode)
  92. @Html.DisplayDescriptionFor(model => model.PostCode)
  93. </div>
  94. </li>
  95. <li><input type="submit" value="修改" /></li>
  96. </ul>
  97. </fieldset>
  98. }
  99. </div>
  100. </div>
  101. @section Scripts {
  102. @Scripts.Render("~/bundles/jqueryval")
  103. }

运行一下看

 

输入资料测试一下。能够正常保存到数据库。 

====================================== 
刚开始学MVC,加之表达能力有限,也没有事先写个大致计划,写的很差、很乱。现在是想到哪里就写哪里,有时候做到后面了,发现前边写的不行又去改前面写的代码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行