真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ASP.NETMVC5中怎么修改用戶資料和密碼-創(chuàng)新互聯(lián)

ASP.NET MVC5中怎么修改用戶資料和密碼,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、廈門網(wǎng)站維護、網(wǎng)站推廣。

一、用戶導(dǎo)航菜單
這個就是側(cè)欄的導(dǎo)航,以后所有控制器中action名都為Menu。目標(biāo)效果如下:

ASP.NET MVC5中怎么修改用戶資料和密碼

先UserController添加Menu action。直接返回分布視圖。右鍵添加視圖


 

我的資料

      
  •   修改資料
  •   
  •   修改密碼
  •   
  •   退出登錄
  •    

    二、顯示用戶資料
    再在User控制器里添加顯示用戶資料的action Details。以后約定所有顯示詳細資料的動作名都為Details。在控制器中返回當(dāng)前用戶的資料

    /// 
     /// 顯示資料
     /// 
     /// 
     public ActionResult Details()
     {
      return View(userService.Find(User.Identity.Name));
     }

    右鍵添加視圖

    @model Ninesky.Models.User
    
    @{
     ViewBag.Title = "我的資料";
    }
    
    
     @Html.Action("Menu")
     
    
     
      
  •  會員中心
  •   
  •  個人中心
  •   
  • 修改資料
  •    @using (Html.BeginForm("Modify","User"))  {   @Html.AntiForgeryToken()      
    用戶資料
         @Html.ValidationSummary(true)   @Html.HiddenFor(model => model.UserID)       @Html.LabelFor(model => model.UserName, new { @class = "control-label col-md-2" })        @Html.DisplayFor(model => model.UserName)              @Html.LabelFor(model => model.DisplayName, new { @class = "control-label col-md-2" })        @Html.EditorFor(model => model.DisplayName)    @Html.ValidationMessageFor(model => model.DisplayName)              用戶組        @foreach (var _relation in Model.UserRoleRelations){ @_relation.Role.Name}              @Html.LabelFor(model => model.Email, new { @class = "control-label col-md-2" })        @Html.EditorFor(model => model.Email)    @Html.ValidationMessageFor(model => model.Email)                              }   @section Scripts {  @Scripts.Render("~/bundles/jqueryval") }

    @foreach (
    var _relation in Model.UserRoleRelations){ @_relation.Role.Name
    } 這里是顯示用戶組名稱,延遲加載。


    ASP.NET MVC5中怎么修改用戶資料和密碼

     三、修改用戶資料
    顯示用戶資料后點擊修改直接向后臺提交數(shù)據(jù),這里把接受并更新數(shù)據(jù)庫的動作名也是Details。在這個方法里不能直接用User做方法參數(shù),因為我只想跟新顯示名和郵箱,我如果設(shè)置User類型的參數(shù),如果用戶向服務(wù)器提交的參數(shù)中含有UserName,可能用戶名都會改掉,這里使用TryUpdateModel來部分更新模型。

    /// 
     /// 修改資料
     /// 
     /// 
     [ValidateAntiForgeryToken]
     [HttpPost]
     public ActionResult Modify()
     {
    
      var _user = userService.Find(User.Identity.Name);
      if (_user == null) ModelState.AddModelError("", "用戶不存在");
      else
      {
      if (TryUpdateModel(_user, new string[] { "DisplayName", "Email" }))
      {
       if (ModelState.IsValid)
       {
       if (userService.Update(_user)) ModelState.AddModelError("", "修改成功!");
       else ModelState.AddModelError("", "無需要修改的資料");
       }
      }
      else ModelState.AddModelError("", "更新模型數(shù)據(jù)失敗");
      }
      return View("Details", _user);
     }

    代碼中的TryUpdateModel(_user, new string[] { "DisplayName", "Email" }) 表示我只想從客戶提交的數(shù)據(jù)中更新DisplayName和Email
     
    四、修改密碼
    先建立一個視圖模型ChangePasswordViewModel

    using System.ComponentModel.DataAnnotations;
    
    namespace Ninesky.Web.Areas.Member.Models
    {
     /// 
     /// 修改密碼視圖模型
     /// 創(chuàng)建:2014.02.19
     /// 
     public class ChangePasswordViewModel
     {
     /// 
     /// 原密碼
     /// 
     [Required(ErrorMessage = "必填")]
     [Display(Name = "密碼")]
     [StringLength(20, MinimumLength = 6, ErrorMessage = "{2}到{1}個字符")]
     [DataType(DataType.Password)]
     public string OriginalPassword { get; set; }
    
     /// 
     /// 新密碼
     /// 
     [Required(ErrorMessage = "必填")]
     [Display(Name = "新密碼")]
     [StringLength(20, MinimumLength = 6, ErrorMessage = "{2}到{1}個字符")]
     [DataType(DataType.Password)]
     public string Password { get; set; }
    
     /// 
     /// 確認密碼
     /// 
     [Required(ErrorMessage = "必填")]
     [Compare("Password", ErrorMessage = "兩次輸入的密碼不一致")]
     [Display(Name = "確認密碼")]
     [DataType(DataType.Password)]
     public string ConfirmPassword { get; set; }
     }
    }

    然后在UserController中添加動作public ActionResult ChangePassword() 直接返一個視圖。右鍵添加ChangePasswordViewModel類型的視圖

    @model Ninesky.Web.Areas.Member.Models.ChangePasswordViewModel
    
    @{
     ViewBag.Title = "修改密碼";
    }
    
     @Html.Action("Menu")
     
     
      
  •  會員中心
  •   
  •  個人中心
  •   
  • 修改密碼
  •    @using (Html.BeginForm())  {   @Html.AntiForgeryToken()      
    修改密碼
         @Html.ValidationSummary(true)       @Html.LabelFor(model => model.OriginalPassword, new { @class = "control-label col-md-2" })        @Html.EditorFor(model => model.OriginalPassword)    @Html.ValidationMessageFor(model => model.OriginalPassword)              @Html.LabelFor(model => model.Password, new { @class = "control-label col-md-2" })        @Html.EditorFor(model => model.Password)    @Html.ValidationMessageFor(model => model.Password)              @Html.LabelFor(model => model.ConfirmPassword, new { @class = "control-label col-md-2" })        @Html.EditorFor(model => model.ConfirmPassword)    @Html.ValidationMessageFor(model => model.ConfirmPassword)                              }  @section Scripts {   @Scripts.Render("~/bundles/jqueryval")  }  

    在添加一個接受處理動作,代碼也很簡單

    [ValidateAntiForgeryToken]
     [HttpPost]
     public ActionResult ChangePassword(ChangePasswordViewModel passwordViewModel)
     {
      if(ModelState.IsValid)
      {
      var _user = userService.Find(User.Identity.Name);
      if (_user.Password == Common.Security.Sha256(passwordViewModel.OriginalPassword))
      {
       _user.Password = Common.Security.Sha256(passwordViewModel.Password);
       if (userService.Update(_user)) ModelState.AddModelError("", "修改密碼成功");
       else ModelState.AddModelError("", "修改密碼失敗");
      }
      else ModelState.AddModelError("", "原密碼錯誤");
      }
      return View(passwordViewModel);
     }

    五、在首頁顯示登錄、注冊鏈接
    在Web的Shared文件件添加LoginPartial.cshtml視圖文件,在用戶未登錄時顯示登錄和注冊鏈接,登錄后顯示用戶名。

    @using Microsoft.AspNet.Identity
    @if (Request.IsAuthenticated)
    {
     using (Html.BeginForm("Logout", "User", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
     {
     @Html.AntiForgeryToken()
    
     
      
  •   @Html.ActionLink("你好 " + User.Identity.GetUserName() + "!", "Manage", "Account", routeValues: null, htmlAttributes: new { title = "管理" })   
  •   
  • 注銷
  •    } } else {    
  • @Html.ActionLink("注冊", "Register", "User", routeValues: new { Area = "Member" }, htmlAttributes: new { id = "registerLink" })
  •  
  • @Html.ActionLink("登錄", "Login", "User", routeValues: new {Area="Member"}, htmlAttributes: new { id = "loginLink" })
  •   }

    效果如下:

    登錄前

    ASP.NET MVC5中怎么修改用戶資料和密碼

    登陸后

    ASP.NET MVC5中怎么修改用戶資料和密碼

     ok.現(xiàn)在我們可以給給member區(qū)域的UserController控制器和Homecontroller加上[Authorize]特性。并為Usercontroller的注冊 登錄 驗證碼action 加上[AllowAnonymous]特性。

    這次修改資料部分用到了部分更新模型方法TryUpdateModel,到此member區(qū)域的用戶部分暫時結(jié)束。

    看完上述內(nèi)容,你們掌握ASP.NET MVC5中怎么修改用戶資料和密碼的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


    本文名稱:ASP.NETMVC5中怎么修改用戶資料和密碼-創(chuàng)新互聯(lián)
    標(biāo)題鏈接:http://weahome.cn/article/csgieg.html

    其他資訊

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部