簡體   English   中英

如何在Asp.Net Mvc中編輯用戶配置文件,例如用戶角色?

[英]How to edit user profile such as user role in Asp.Net Mvc?

我想將用戶配置文件顯示到_EditUser視圖,然后編輯用戶配置文件,例如用戶角色..名稱和電子郵件。

但是當涉及到用戶角色時,它崩潰了。 我得到500(內部服務器錯誤)它在這里崩潰:

model.ApplicationRoleId = RoleManager.Roles.Single(r => r.Name == UserManager.GetRoles(id).Single()).Id;

這是我的EditUserview

    public class EditUserViewModel
    {
      public string Id { get; set; }
      public string Name { get; set; }
      public string Email { get; set; }
      public List<SelectListItem> ApplicationRoles { get; set; }
      public string ApplicationRoleId { get; set; }
    }

這是我的EditUser操作

[HttpGet]
public async Task<IActionResult> EditUser(string id)
{
    EditUserViewModel model = new EditUserViewModel();
    model.ApplicationRoles = roleManager.Roles.Select(r => new SelectListItem
    {
        Text = r.Name,
        Value = r.Id
    }).ToList();



    if (!String.IsNullOrEmpty(id))
    {
        ApplicationUser user = await userManager.FindByIdAsync(id);
        if (user != null)
        {
          model.Name = user.Name;
          model.Email = user.Email;
          model.ApplicationRoleId = RoleManager.Roles.Single(r => r.Name == UserManager.GetRoles(id).Single()).Id; // Here crashing .. I don't know why.. Server 500 error
          ViewBag.RoleId = new SelectList(RoleManager.Roles, "Id", "Name", model.ApplicationRoleId);
         }
    }
    return PartialView("_EditUser", model);
}

在我的“查看”頁面“ _EditUser.cshtml”中,我的用戶角色下拉列表如下所示

<div class="form-group">
                @Html.Label("Role", htmlAttributes: new { @class = "control-label col-md-6" })
                <div class="col-md-12" >
                    @Html.DropDownList("RoleId", null, htmlAttributes: new { @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.ApplicationRoles, "", new { @class = "text-danger" })
                </div>
            </div>

/ 先感謝您

我確實喜歡@Shyju在我的舊問題中寫道

var role = await UserManager.GetRolesAsync(user.Id);
                    var existingRole = role.First();
 if (existingRole != null)
  {
 string existingRoleId = RoleManager.Roles.Single(r => r.Name == existingRole).Id;
model.ApplicationRoleId = existingRoleId;
.....  and so on ....

}

謝謝你們和@Shyju

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM