ASP.NET MVC5网站开发之添加、删除、重置密码、修改密码、列表浏览管理员篇2(六)

yizhihongxing

这篇攻略主要讲解如何在ASP.NET MVC5网站中添加、删除、重置密码、修改密码以及列表浏览管理员。下面将一步一步详细讲解。

1. 添加管理员

添加管理员需要创建一个表单,其中包括如下字段:用户名、密码、电子邮件和角色。首先,我们需要在标记为AllowAnonymous的 HomeController中添加如下代码,以创建表单视图:

// 返回添加管理员表单视图
public ActionResult AddAdmin()
{
    return View();
}

接下来,创建AddAdmin视图并将表单元素添加到视图中:

@using (Html.BeginForm("AddAdmin", "Admin", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
    @Html.AntiForgeryToken()

    <div class="form-group">
        @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
            @Html.ValidationMessageFor(m => m.UserName)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
            @Html.ValidationMessageFor(m => m.Password)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
            @Html.ValidationMessageFor(m => m.Email)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(m => m.Role, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.DropDownListFor(m => m.Role, ViewBag.RoleList as SelectList, new { @class = "form-control" })
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <button type="submit" class="btn btn-default">添加管理员</button>
        </div>
    </div>
}

接着在AdminController中添加如下代码以处理表单提交事件:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> AddAdmin(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser { UserName = model.UserName, Email = model.Email };
        var result = await UserManager.CreateAsync(user, model.Password);
        if (result.Succeeded)
        {
            // 添加角色
            await UserManager.AddToRoleAsync(user.Id, model.Role);
            return RedirectToAction("Index", "Admin");
        }
        AddErrors(result);
    }

    // 如果到达此处,则发生了某些错误,请将模型状态添加到视图中以显示验证错误
    ViewBag.RoleList = new SelectList(RoleManager.Roles.ToList(), "Name", "Name");
    return View(model);
}

2. 删除管理员

在AdminController中,添加如下代码以删除管理员:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Delete(string id)
{
    var user = await UserManager.FindByIdAsync(id);
    if (user != null)
    {
        var result = await UserManager.DeleteAsync(user);
        if (result.Succeeded)
        {
            return RedirectToAction("Index", "Admin");
        }
        AddErrors(result);
    }
    else
    {
        ModelState.AddModelError("", "找不到该管理员");
    }

    return View("Error");
}

在Admin视图中,添加如下代码以显示删除按钮:

@foreach (var user in Model)
{
    <tr>
        <td>
            @user.UserName
        </td>
        <td>
            @user.Email
        </td>
        <td>
            @foreach (var role in UserManager.GetRoles(user.Id))
            {
                <span class="label label-success">@role</span>
            }
        </td>
        <td>
            @Html.ActionLink("修改密码", "ResetPassword", new { userId = user.Id }, new { @class = "btn btn-primary btn-xs" }) |
            @Html.ActionLink("删除", "Delete", new { id = user.Id }, new { @class = "btn btn-danger btn-xs" })
        </td>
    </tr>
}

示例说明

示例1:在添加管理员时,添加一个角色下拉列表,以便用户选择该管理员的角色。在AddAdmin视图中,使用@Html.DropDownListFor()来生成一个下拉列表并将其绑定到model.Role属性。在Admin视图中,使用foreach循环来显示每个管理员的角色。

<div class="form-group">
    @Html.LabelFor(m => m.Role, new { @class = "col-md-2 control-label" })
    <div class="col-md-10">
        @Html.DropDownListFor(m => m.Role, ViewBag.RoleList as SelectList, new { @class = "form-control" })
    </div>
</div>
<td>
    @foreach (var role in UserManager.GetRoles(user.Id))
    {
        <span class="label label-success">@role</span>
    }
</td>

示例2:添加管理员成功,将其带回管理员列表页面。在AddAdmin方法中,使用RedirectToAction方法将用户重定向到Admin控制器的Index操作中。

if (result.Succeeded)
{
    await UserManager.AddToRoleAsync(user.Id, model.Role);
    return RedirectToAction("Index", "Admin");
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC5网站开发之添加、删除、重置密码、修改密码、列表浏览管理员篇2(六) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • jquery选择器简述

    jQuery选择器简述 在jQuery中,选择器是获取文档中某个元素的一种方式。可以通过选择器来获取需要的元素,并对其进行操作。本文将简单介绍jQuery选择器的使用方法和常见选择器类型。 基础选择器 jQuery支持各种基础选择器,如元素选择器、id选择器、类选择器等。 元素选择器 元素选择器是通过标签名来选取元素的,比如说选取HTML文档中所有的段落元素…

    css 2023年6月9日
    00
  • css为什么要放在head标签中

    CSS(层叠样式表)是一种用于描述HTML元素如何被显示的语言。在HTML文档中,CSS可以被放置在HTML页面中的三个位置: 标签内、标签内或者外部的CSS文件中。然而,通常情况下我们把CSS样式表放在标签中,以下是CSS放在标签中的几个好处: 1. 加载顺序 浏览器在加载网页时会从上到下逐行解析HTML文档,因此如果我们把CSS放在标签内,浏览器会先加载…

    css 2023年6月11日
    00
  • 纯HTML+CSS3制作导航菜单(附源码)

    “纯HTML+CSS3制作导航菜单(附源码)”是一篇简单易懂的教程,它详细介绍了如何使用HTML和CSS3来制作一个漂亮的导航菜单。下面我将为您提供完整攻略的介绍以及两个示例说明。 1.简介: 这篇教程主要介绍了如何使用HTML和CSS3创建漂亮的导航菜单。通过结构化和语义化的HTML代码和优雅的CSS3样式,我们可以轻松地制作一个具有交互性和美观性的导航菜…

    css 2023年6月9日
    00
  • 利用iscroll4实现轮播图效果实例代码

    使用iscroll4实现轮播图效果,可以提高用户的交互体验,下面是实现该效果的攻略: 步骤一:导入iscroll4 在页面中引入iscroll4的js和css文件,可以从以下地址下载: https://github.com/cubiq/iscroll/archive/v4.2.5.zip 步骤二:页面结构 在页面中添加一个div元素,用于包含轮播图的图片,H…

    css 2023年6月10日
    00
  • 利用CSS3在Angular中实现动画

    下面是详细的攻略: 利用CSS3在Angular中实现动画 1. 前置条件 在开始利用CSS3在Angular中实现动画之前,需要确保以下工具和技术已经具备: Angular的基本概念和使用方法 CSS3动画的基本知识和使用方法 2. 新建Angular应用 首先,我们需要新建一个Angular应用。可以使用Angular CLI来快速生成一个基础项目: n…

    css 2023年6月10日
    00
  • DIV遮罩层如何实现

    下面是“DIV遮罩层如何实现”的完整攻略。 什么是DIV遮罩层? DIV遮罩层是一种覆盖在网页上,通过透明的DIV层来对网页进行遮蔽的技术。通常用在弹出窗口、提示信息等场景中。 实现步骤 1. 布局 首先,我们需要在html中添加一个用来显示遮罩层的div元素。 <div class="mask"></div> 2…

    css 2023年6月10日
    00
  • Dreamweaver CS3网页制作之CSS布局规则

    Dreamweaver CS3网页制作之CSS布局规则攻略 CSS布局是网页开发的重要组成部分。在使用Dreamweaver CS3进行网页制作时,掌握CSS布局规则可以帮助我们更高效地构建网页。 1. CSS布局的基本原理 在CSS布局中,通过设置样式来控制HTML元素的位置、大小、对齐和显示效果。CSS布局的基本原理有以下几点: 盒模型:每个HTML元素…

    css 2023年6月10日
    00
  • CSS样式表渐进增强的应用

    CSS样式表的渐进增强(Progressive Enhancement)是一种设计网站的方法,它可以让网站在各种浏览器和设备上都具有基本的功能和信息,而不是仅仅在某些高级浏览器上才能完全呈现效果。下面是一些CSS样式表渐进增强的应用策略: 使用基础的CSS 使用基础的CSS样式来设置网站的基本样式,这样即使不支持CSS的旧浏览器也可以以基本的方式渲染页面。例…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部