创建用户管理相关视图

第一步:添加视图   打开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 中角色启用和基本使用(六)的更多相关文章

  1. asp.net identity 2.2.0 中角色启用和基本使用(七)提示点

    在使用asp.net identity 2.2.0 中,大家可能设计到一些修改和配置 关于Identity的配置,在App_Start文件中的IdentityConfig.cs中,这里几乎有你需要的一 ...

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

    创建角色相关视图 第一步:添加视图   打开RolesAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会 ...

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

    创建控制器 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:RolesAdminController.cs 第二步:添加命 ...

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

    建立控制器UsersAdminController 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:UsersAdminC ...

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

    建立模型 第一步:在Models文件夹上点右键 >添加>类     类的名称自定,我用AdminViewModels命名的 因为是讲基本使用,我这里不做任何扩展. 第二步:添加如下命名空间 ...

  6. ASP.NET Identity 身份验证和基于角色的授权

    ASP.NET Identity 身份验证和基于角色的授权 阅读目录 探索身份验证与授权 使用ASP.NET Identity 身份验证 使用角色进行授权 初始化数据,Seeding 数据库 小结 在 ...

  7. asp.net identity 2.2.0 在MVC下的角色启用和基本使用(一)

    基本环境:asp.net 4.5.2 第一步:在App_Start文件夹中的IdentityConfig.cs中添加角色控制器. 在namespace xxx内(即最后一个“}”前面)添加 角色控制类 ...

  8. ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇

    在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Ide ...

  9. asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(四)

    有网友问及权限的问题,其实我觉得没什么改进. 主目录下的web.config基本不用改.要说要改的也就只有数据库连接了. <authentication mode="None" ...

随机推荐

  1. Codeforces Round #342 (Div. 2)

    贪心 A - Guest From the Past 先买塑料和先买玻璃两者取最大值 #include <bits/stdc++.h> typedef long long ll; int ...

  2. Linux下使用vsftp

    参考网址: http://wenku.baidu.com/view/4339434bc850ad02de80419c.html?re=view root用户无法ftp登录,显示530 Permissi ...

  3. BZOJ4435 : [Cerc2015]Juice Junctions

    最大流=最小割,而因为本题点的度数不超过3,所以最小割不超过3,EK算法的复杂度为$O(n+m)$. 通过分治求出最小割树,设$f[i][j][k]$表示最小割为$i$时,$j$点在第$k$次分治过程 ...

  4. BZOJ3583 : 杰杰的女性朋友

    将$I$转置,设$G=OI$,则$ans=G^0+G^1+...+G^d$. 注意到$G^d=O(IO)^{d-1}I$,而$IO$是大小为$k\times k$的矩阵,可以通过倍增在$O(k^3\l ...

  5. 【BZOJ1827】[Usaco2010 Mar]gather 奶牛大集会 树形DP

    [BZOJ][Usaco2010 Mar]gather 奶牛大集会 Description Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...

  6. 21045308刘昊阳 《Java程序设计》第十周学习总结

    21045308刘昊阳 <Java程序设计>第十周学习总结 教材学习内容总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 狭义的网络编程范畴:程序员所作的事情 ...

  7. js判断访问来源

    通过navigator的userAgent属性来判定 userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值.一般来讲,它是在 navigator.appCode ...

  8. [深入浅出WP8.1(Runtime)]应用文件的URI方案

    6.2.4 应用文件的URI方案 在上文我们获取文件的方式都是通过应用程序的三个跟目录的文件夹对象来获取文件夹对象和文件对象,那么我们这一小节来讲解一种新的获取文件对象的方式,这种方式就是通过Uri地 ...

  9. spring源码学习之路---深度分析IOC容器初始化过程(四)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 最近由于工作和生活,学习耽搁 ...

  10. 应用的启动视图 LauchView

    @interface AppDelegate () @property(strong,nonatomic) UIImageView *launchImaViewO; @property(strong, ...