2018教程之mvc+ef之五:Identity角色管理之角色列表和删除角色修改角色
角色列表的功能
一、先建个模型
在ViewModels下新RolesViewModel.cs
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace MYtest2018.ViewModels
{
public class RolesViewModel
{
public string Id { get; set; }
[Display(Name = "角色名")]
public string Name { get; set; }
}
}
二、后台
/// 所有角色名称
/// </summary>
/// <returns></returns>
[HttpGet]
//[Authorize(Roles = "Super")]
public ActionResult ListRoles()
{
var roleList = RoleManager.Roles.ToList();
var roles = from m in roleList select new RolesViewModel {
Id = m.Id,
Name=m.Name
};
return View(roles);
}
三、前台
注意前台的后面按钮的可能不正确。
@model IEnumerable<MYtest2018.ViewModels.RolesViewModel>
@{
ViewBag.Title = "ListRoles";
Layout = "~/Views/Shared/_Layoutadmin.cshtml";
}
<div class="wrapper wrapper-content">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h2>角色管理</h2>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="form-group">
@foreach (var role in Model)
{
<div class="row">
<div class="col-md-2 RoleList"><span class="glyphicon glyphicon-user" aria-hidden="true"></span> @Html.DisplayFor(m => role.Name) </div>
<div class="col-md-8 usertitle">
<a class="btn btn-xs btn-white" href="~/Account/EditRole/@role.Id"><i class="fa fa-bank"></i> 编辑 </a>
<a class="btn btn-xs btn-white" href="~/Account/RemoveRole/@role.Id" onclick="return confirm('你确认删除吗?')"><i class="fa fa-bank"></i> 删除 </a>
<a class="btn btn-xs btn-white" href="~/Account/UserToRole/@role.Id")"><i class="fa fa-bank"></i> 添加用户 </a>
<a class="btn btn-xs btn-white" href="~/Account/ViewRoleUser/@role.Id" )"><i class="fa fa-bank"></i> 查看用户 </a>
<a class="btn btn-xs btn-white" href="~/Account/ViewRoleUser/@role.Id" )"><i class="fa fa-bank"></i> 查看用户 </a>
</div>
</div>
<hr />
}
</div>
</div>
</div>

四,删除角色
/// <summary>
/// 删除用户
/// </summary>
/// <param name="disposing"></param>
// POST: Menus/Delete/5
[HttpGet]
//[Authorize(Roles = "Super")]
//[ValidateAntiForgeryToken]
public async Task<ActionResult> RemoveRole(string id)
{
if (string.IsNullOrEmpty(id))
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
}
var role = RoleManager.FindById(id);
if (role == null)
{
return HttpNotFound();
}
var result = await RoleManager.DeleteAsync(role);
if (!result.Succeeded)
{
AddErrors(result);
}
return RedirectToAction("ListRoles");
}
五、修改角色
1.后台
/// <summary>
/// 编辑角色
/// </summary>
/// <returns></returns>
[HttpGet]
//[Authorize(Roles = "Super")]
public ActionResult EditRole(string id)
{
if (string.IsNullOrEmpty(id))
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
}
IdentityRole role = RoleManager.FindById(id);
if (role == null)
{
return HttpNotFound();
}
var editModel = new RolesViewModel()
{
Name = role.Name
};
return View(editModel);
}
/// <summary>
/// 编辑角色
/// </summary>
/// <param name="id"></param>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
//[Authorize(Roles = "Super")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> EditRole(string id, RolesViewModel model)
{
if (ModelState.IsValid && !string.IsNullOrEmpty(id))
{
var role = RoleManager.FindById(id);
role.Name = model.Name;
var result = await RoleManager.UpdateAsync(role);
if (result.Succeeded)
{
return RedirectToAction("ListRoles");
}
AddErrors(result);
}
return View(model);
}
前台
@model MYtest2018.ViewModels.RolesViewModel
@{
ViewBag.Title = "EditRole";
Layout = "~/Views/Shared/_Layoutadmin.cshtml";
}
<div class="wrapper wrapper-content">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h2>修改角色名称 <a class="btn btn-primary btn-sm" href="/Account/ListRoles">返回</a></h2>
<div class="ibox-tools">
<a class="collapse-link">
<i class="fa fa-chevron-up"></i>
</a>
</div>
</div>
<div class="ibox-content">
<div class="form-group">
@using (Html.BeginForm("EditRole", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.Name, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="提交" />
</div>
</div>
}
</div>
</div>
</div>
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
七,效果
浙公网安备 33010602011771号