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" ...
随机推荐
- 20145223《Java程序程序设计》第1周学习总结
20145223 <Java程序设计>第1周学习总结 教材学习内容总结 1.JDK.JRE以及JVM的区别 JDK:撰写java程序语言的时候需要用到的编译工具 JRE:java执行环境 ...
- 学习资源asp.net
http://www.runoob.com ajax 同一表单,多部分提交.增加,修改,删除 服务器端控件: http://technet.microsoft.com/zh-cn/library/cc ...
- Collection与Map
20145217 <Java程序设计>第5周学习总结(2) 教材学习内容总结 程序中常有收集对象的需求 9.1collection架构 收集对象的行为,像是新增对象的add()方法.移除对 ...
- [转载] Spring MVC - 处理器拦截器
5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. ...
- How to: 使用 数据流 实现生产者-消费者模式
producer把消息发送到消息块,consumer从块读取消息. 安装: Install-Package Microsoft.Tpl.Dataflow using System.Thread ...
- ASP.net的url重写
http://blog.csdn.net/windok2004/article/details/2432691 1. 有关于URL的重写,本文也只是拿来主意.相继有MS的组件“URLRewriter” ...
- 用存储过程 将大段的SQL藏起来
在日常工作中,当面对比较复杂的数据库操作时不免要写一些比较长的SQL,由于某系SQL有些长(目前我写的最长的貌似有30多行吧),这时候长会面临这个 方法 优点 缺点 用"+"串 ...
- Code[VS]1690 开关灯 题解
Code[VS]1690 开关灯 题解 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description: YYX家门前 ...
- 【BZOJ】1436: Poi2003 Trinomial
题意 \(q(1 \le q \le 10000)\)次询问,每一次求\((x^2+x+1)^n\)的第\(k\)项系数模3. 分析 听说正解是\(\binom{2n}{m} (m \% 2+1)\) ...
- mvc2 To 4
asp.net mvc2新特性:1.区域,有利于分模块开发 2.数据注解和验证 3.View层强类型辅助方法 4.UI Templates 5.httppost,默认参数asp.net mvc3新特性 ...