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="@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="@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.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="删除" class=" btn btn-default" /> |
        @Html.ActionLink("返回用户列表","Index")
    </div>
    }
</div>


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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。