asp.net identity 2.2.0 中角色启用和基本使用(六)
创建用户管理相关视图
第一步:添加视图 打开UsersAdminController.cs 将鼠标移动到public ActionResult Index()上 右键》添加视图 系统会弹出对话框 什么也不用改 直接“添加”
第二步:在创建的视图上定义一个公开枚举模型
在第一行添加 @model IEnumerable<xxxx(项目名).Models .ApplicationUser>
第三步:建立页面视图模板,代码完成后如下。
@model IEnumerable<xxxx.Models .ApplicationUser> @{ ViewBag.Title = "用户列表"; } <h2>用户列表</h2> <p> @Html.ActionLink("新建用户","Create") </p> <table class="table"> <tr> <th> @Html.DisplayNameFor(model =>model.UserName) </th> <th> </th> </tr> @foreach(var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.UserName) </td> <td> @Html.ActionLink("编辑用户", "Edit", new { id =item.Id}) | @Html.ActionLink("用户详情", "Details", new { id = item.Id})| @Html.ActionLink("删除用户", "Delete", new { id = item.Id }) </td> </tr> } </table>
重复上述步骤完成其他视图模板。
需要注意的是 1、Create视图模板顶部定义的是@model xxxx.Models.RegisterViewModel模型
2、Edit视图模板顶部定义的是一个@model xxxx(项目名).Models.EditUserViewModel模型。
3、Delete视图模板和Details视图模板 顶部定义的是一个@model xxxx.Models.ApplicationUser模型。
完成后的相关代码如下:
Create视图模板:
@model xxxx.Models.RegisterViewModel @{ ViewBag.Title = "创建用户"; } <h2>创建用户</h2> @using (Html.BeginForm("Create","UsersAdmin",FormMethod.Post,new{@class ="form-horizontal",role ="form"})) { @Html.AntiForgeryToken() //创建防伪标记 <h4>创建用户</h4> <hr /> @Html.ValidationSummary("",new {@class = "text-error"}) <div class=" form-group"> @Html.LabelFor(model => model.Email, new { @class ="col-md-2 control-label"}) <div class=" col-md-10"> @Html.TextBoxFor(model => model.Email, new { @class="form-control"}) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Password, new { @class = "col-md-2 control-label" }) <div class=" col-md-10"> @Html.PasswordFor(model => model.Password, new { @class = "form-control" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.ConfirmPassword, new { @class = "col-md-2 control-label" }) <div class=" col-md-10"> @Html.PasswordFor(model => model.ConfirmPassword, new { @class = "form-control" }) </div> </div> <div class=" form-group"> <label class=" col-md-2 control-label"> 编辑用户角色 </label> <div class=" col-md-10"> @foreach(var item in (SelectList)ViewBag.RoleId) { <input type="button" name="SelectedRoles" value="@item.Value" class="checkbox-inline" /> @Html.Label(item.Value, new { @class = "control-label" }) } </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" class="btn btn-default" /> </div> </div> } <div> @Html.ActionLink("返回用户列表", "Index")</div> @section Scripts{ @Scripts.Render("~/bundles/jqueryval") }
用户编辑Edit视图模板:
@model xxxx.Models.EditUserViewModel @{ ViewBag.Title = "编辑用户"; } <h2>编辑用户</h2> @using (Html.BeginForm()) { @Html.AntiForgeryToken(); <div class=" form-horizontal"> <h4>编辑用户</h4> <hr /> @Html.ValidationSummary(true) @Html.HiddenFor(model =>model .Id) <div class="form-group"> @Html.LabelFor(model => model.Email, new { @class = "control-label col-md-2" }) <div class=" col-md-10"> @Html.TextBoxFor(model => model.Email, new { @class = "form-control" }) @Html.ValidationMessageFor(model => model .Email ) </div> </div> <div class=" form-group"> @Html.Label("角色组", new { @class = "control-label col-md-2" }) <span class=" col-md-10"> @foreach (var item in Model.RolesList) { <input type="checkbox" name="SelectedRole" value="@item.Value" checked ="@item.Selected" class="checkbox-inline" /> @Html.Label(item.Value ,new {@class = "control-label" }) } </span> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="保存" class="btn btn-default"> </div> </div> </div> } <div> @Html.ActionLink("返回用户列表","Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
Details视图模板:
@model xxxx(项目名).Models.ApplicationUser @{ ViewBag.Title = "用户详情"; } <h2>用户详情</h2> <div> <h4>用户</h4> <hr /> <dl class="dl-horizontal "> <dt> @Html.Label("用户名称:")</dt> <dd> @Html.DisplayFor(model => model.UserName) </dd> </dl> </div> <h4>该用户所在的角色:</h4> @if( ViewBag.RoleNames.Count == ) { <hr /> <p>这个用户没有设置角色</p> } <table class="table"> @foreach (var item in ViewBag.RoleNames) { <tr> <td> @item </td> </tr> } </table> <p> @Html.ActionLink("编辑用户", "Edit", new { id=Model.Id}) @Html.ActionLink("返回用户列表","Index") </p>
Delete视图模板:
@model xxxx.Models .ApplicationUser @{ ViewBag.Title = "删除用户"; } <h2>删除用户</h2> <h3>您确认要删除这个用户吗??</h3> <div> <h4>用户</h4> <hr /> <dl class=" dl-horizontal "> <dt> @Html.Label("用户名称:")</dt> <dd> @Html.DisplayFor(model =>model .UserName) </dd> </dl> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-actions no-color"> <input type="submit" value="删除用户" class=" btn btn-default" /> | @Html.ActionLink("返回用户列表","Index") </div> } </div>
最后:让我们在项目的View》Shared文件夹中的_layout.cshtml上添加上链接
<div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("About", "About", "Home")</li> <li>@Html.ActionLink("Contact", "Contact", "Home")</li> @*通过身份验证并确认用户属于Admin角色显示管理菜单*@ @if (Request.IsAuthenticated && User.IsInRole("Admin")) { <li>@Html.ActionLink("用户管理", "Index", "UsersAdmin")</li> <li>@Html.ActionLink("角色管理", "Index", "RolesAdmin")</li> } </ul> @Html.Partial("_LoginPartial") </div>
温馨提示:为了确保网站的安全建议大家在App_Start文件夹中的FilterConfig.cs的public static void RegisterGlobalFilters(GlobalFilterCollection filters)方法内再加上一句
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
至此,所有的功能已经完全实现了。鉴于Asp.Net Identity 3.0.0将随vs2014于明年发布,暂时就不研究自定义模式了。
asp.net identity 2.2.0 中角色启用和基本使用(六)的更多相关文章
- asp.net identity 2.2.0 中角色启用和基本使用(七)提示点
在使用asp.net identity 2.2.0 中,大家可能设计到一些修改和配置 关于Identity的配置,在App_Start文件中的IdentityConfig.cs中,这里几乎有你需要的一 ...
- asp.net identity 2.2.0 中角色启用和基本使用(四)
创建角色相关视图 第一步:添加视图 打开RolesAdminController.cs 将鼠标移动到public ActionResult Index()上 右键>添加视图 系统会 ...
- asp.net identity 2.2.0 中角色启用和基本使用(三)
创建控制器 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:RolesAdminController.cs 第二步:添加命 ...
- asp.net identity 2.2.0 中角色启用和基本使用(五)
建立控制器UsersAdminController 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:UsersAdminC ...
- asp.net identity 2.2.0 中角色启用和基本使用(二)
建立模型 第一步:在Models文件夹上点右键 >添加>类 类的名称自定,我用AdminViewModels命名的 因为是讲基本使用,我这里不做任何扩展. 第二步:添加如下命名空间 ...
- ASP.NET Identity 身份验证和基于角色的授权
ASP.NET Identity 身份验证和基于角色的授权 阅读目录 探索身份验证与授权 使用ASP.NET Identity 身份验证 使用角色进行授权 初始化数据,Seeding 数据库 小结 在 ...
- asp.net identity 2.2.0 在MVC下的角色启用和基本使用(一)
基本环境:asp.net 4.5.2 第一步:在App_Start文件夹中的IdentityConfig.cs中添加角色控制器. 在namespace xxx内(即最后一个“}”前面)添加 角色控制类 ...
- ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Ide ...
- asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(四)
有网友问及权限的问题,其实我觉得没什么改进. 主目录下的web.config基本不用改.要说要改的也就只有数据库连接了. <authentication mode="None" ...
随机推荐
- input的placeholder文字颜色修改
input::-webkit-input-placeholder { color: #D6D0CA !important; /* WebKit browsers / } input:-moz-plac ...
- Glow Android 优化实践
了解 Glow 的朋友应该知道,我们主营四款 App,分别是Eve.Glow.Nuture和Baby.作为创业公司,我们的四款 App 都处于高速开发中,平均每个 Android App 由两人负责开 ...
- jQuery操作radiobutton
1.获取某个radio选中的值,有三种方法 $("input:radio:checked").val()(*我最喜欢) ; $("input[type='radio'] ...
- java中 ==与equals 有什么区别?
1.==既可以比较基本类型变量,又可比较引用类型变量,而equals只能比较引用类型变量: 2.equals方法支持重写,如果未重写equals方法,则比较引用变量时与==都是比较变量所指向的对象地址 ...
- HDU4871 Shortest-path tree(最短路径树 + 树的点分治)
题目大概要先求一张边有权的图的根为1的最短路径树,要满足根到各点路径序列的字典序最小:然后求这棵最短路径树包含k个结点的最长路径的长度和个数. 首先先构造出这棵字典序最小的最短路径树..好吧,我太傻逼 ...
- underscore.js依赖库函数分析二(查找)
查找: 在underscore.js封装了对dom查找的操作,find()和filter()函数,find()函数的查找操作是返回首个与条件相符的元素值,filter()函数是找到与条件相符的所有元素 ...
- BZOJ4449 : [Neerc2015]Distance on Triangulation
首先拓扑,每次取出度数为$2$的点,这样可以把所有三角形都找到. 那么建出对偶图,会发现是一棵树. 对这棵树进行点分治,每次取出重心,DFS求出所有在里面的点,然后从重心$3$个点分别做一次BFS. ...
- BZOJ3548 : [ONTAK2010]Party
首先将朋友通过并查集缩起来,因为$P\geq\frac{n(n-1)}{3}$,所以最后最多剩下$46$个点. 将自相矛盾的点删掉,就变成求最大权独立集问题,这等于求补图的最大团. 然后直接用Bron ...
- UVa 11922 & splay的合并与分裂
题意: 1个1—n的排列,实现一下操作:将a—b翻转并移动至序列的最后. SOL: splay维护区间的裸题——不过平衡树的题目貌似都是裸的吧...就是看操作的复杂程度罢... 如何取区间呢,我们在s ...
- Codeforces Round #244 (Div. 2) B. Prison Transfer
题目是选出c个连续的囚犯,而且囚犯的级别不能大于t #include <iostream> using namespace std; int main(){ int n,t,c; cin ...