iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
Modern Web

從實作學習ASP.NET Core - 30天的購物網站系列 第 17

【從實作學習ASP.NET Core】Day17 | 後台 | 角色的 CRUD 頁面

昨天在處理角色的時候已經把新增的頁面處理好了
今天就用之前的方法把角色的其他頁面也建立起來吧!


宣告 UserManager & RoleManager

UserManagerRoleManagerIdentity 用來處理會員和角色的實體
在這裡我們會大量使用到他們來操作已經存入資料庫的帳號們
所以必須先在 UserController.cs 中加入宣告:

private readonly RoleManager<IdentityRole> _roleManager;
private readonly UserManager<OnlineShopUser> _userManager;

public UserController(RoleManager<IdentityRole> roleManager, 
                      UserManager<OnlineShopUser> userManager)
{
    this._roleManager = roleManager;
    this._userManager = userManager;
}

角色列表

沒什麼特別的,就是把他列出來而已

public IActionResult RoleList()
{
    var roles = _roleManager.Roles;
    return View(roles);
}

角色編輯

這邊我想順便把屬於該角色的帳號列出來,就可以用到 GetUsersInRoleAsync 來取得內容

public async Task<IActionResult> RoleEdit(string id)
{
    if (id == null)
    {
        return NotFound();
    }
    var role = await _roleManager.FindByIdAsync(id);
    if (role == null)
    {
        return NotFound();
    }
    else
    {
        ViewBag.users = await _userManager.GetUsersInRoleAsync(role.Name);
    }
    return View(role);
}

public async Task<IActionResult> RoleEdit(IdentityRole role)
{
    if (role == null)
    {
        return NotFound();
    }
    else
    {
        var result = await _roleManager.UpdateAsync(role);
        if (result.Succeeded)
        {
            return RedirectToAction("ListUsers");
        }
        foreach (var error in result.Errors)
        {
            ModelState.AddModelError("", error.Description);
        }
     }
     return View();
}


上一篇
【從實作學習ASP.NET Core】Day16 | 後台 | 會員的角色
下一篇
【從實作學習ASP.NET Core】Day18 | 後台 | 會員的 CRUD 頁面
系列文
從實作學習ASP.NET Core - 30天的購物網站30

1 則留言

0
wesleybabytw
iT邦新手 5 級 ‧ 2021-11-01 16:17:37

頁面有建立起來,但執行都出現異常。

我要留言

立即登入留言