首页 > 代码库 > asp.net identity 2.2.0 中角色启用和基本使用(六)

asp.net identity 2.2.0 中角色启用和基本使用(六)

创建用户管理相关视图

第一步:添加视图   打开UsersAdminController.cs   将鼠标移动到public ActionResult Index()上  右键》添加视图   系统会弹出对话框  什么也不用改 直接“添加”

第二步:在创建的视图上定义一个公开枚举模型

          在第一行添加 @model IEnumerable<xxxx(项目名).Models .ApplicationUser>

第三步:建立页面视图模板,代码完成后如下。

@model IEnumerable<ttg2015.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>            @Html.TextBoxFor(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=http://www.mamicode.com/"@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>}@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=http://www.mamicode.com/"@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=http://www.mamicode.com/"保存" 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.DisplayNameFor(model => model.UserName)        </dt>        <dd>            @Html.DisplayFor(model => model.UserName)        </dd>    </dl></div><h4>该用户所在的角色</h4>@if( ViewBag.RoleNames.Count == 0){    <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.DisplayNameFor(model => model .UserName)        </dt>        <dd>            @Html.DisplayFor(model =>model .UserName)        </dd>    </dl>    @using (Html.BeginForm())    {        @Html.AntiForgeryToken()    <div class="form-actions no-color">        <input type="submit" value=http://www.mamicode.com/"删除" class=" btn btn-default" /> |        @Html.ActionLink("返回用户列表","Index")    </div>    }</div>


至此,所有的功能已经完全实现了。鉴于Asp.Net Identity 3.0.0将随vs2014于明年发布,暂时就不研究自定义模式了。

asp.net identity 2.2.0 中角色启用和基本使用(六)