欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > ASP.NET MVC5網站開發之用戶角色的后臺管理1(七)

ASP.NET MVC5網站開發之用戶角色的后臺管理1(七)

熱門標簽:旅游地圖標注線路 電銷外呼系統是違法的嗎 漯河外呼調研線路 電話機器人鑰匙扣 地圖標注位置怎么弄圖 威力最大的電銷機器人 廣西房產智能外呼系統推薦 電銷專用外呼線路 400電話唐山辦理

角色是網站中都有的一個功能,用來區分用戶的類型、劃分用戶的權限,這次實現角色列表瀏覽、角色添加、角色修改和角色刪除。

一、業務邏輯層

1、角色模型

Ninesky.Core【右鍵】->添加->類,輸入類名Role。

引用System.ComponentModel.DataAnnotations命名空間

using System.ComponentModel.DataAnnotations;

namespace Ninesky.Core
{
 /// summary>
 /// 角色
 /// /summary>
 public class Role
 {
  [Key]
  public int RoleID { get; set; }

  /// summary>
  /// 名稱
  /// /summary>
  [Required(ErrorMessage ="必須輸入{0}")]
  [StringLength(20,MinimumLength =2, ErrorMessage ="{0}長度為{2}-{1}個字符")]
  [Display(Name ="名稱")]
  public string Name { get; set; }

  /// summary>
  /// 說明
  /// /summary>
  [StringLength(1000, ErrorMessage = "{0}必須少于{1}個字符")]
  [Display(Name = "說明")]
  public string Description { get; set; }

 }
}

2、添加表映射

打開Ninesky.Core/NineskyContext.cs,添加Role表映射

3、遷移數據

1)、啟用數據遷移

在【工具欄】->【工具】->NuGet包管理器->程序包管理器控制臺。

輸入命令 Enable-Migrations 回車,為Ninesk.Core啟用數據遷移。

打開Ninesky.Core/Migrations/Configuration.cs文件

將 AutomaticMigrationsEnabled = false;改為 AutomaticMigrationsEnabled = ture;來啟用自動遷移。

2)、更新數據表

運行命令Update-Database。提示錯誤:There is already an object named 'Administrators' in the database.

這是因為先生成了Administrators表后啟用的數據遷移。在更新表的時候視圖創建Administrators表失敗。

打開服務器資源管理器,如圖選擇Administrators【右鍵】->刪除。

刪除成功后再次運行Update-Database,執行成功。

因為剛才刪除表的時候把管理員賬號也刪掉了,記得打開Administrators表添加一個管理員賬號,記得密碼可以輸入jZae727K08KaOmKSgOaGzww/XVqGr/PKEgIMkjrcbJI= 這是123456加密后的字符串。

4、角色管理

Ninesky.Core【右鍵】->添加->類,輸入類名RoleManager,類繼承自BaseManagerRole>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ninesky.Core
{
 /// summary>
 /// 角色管理
 /// /summary>
 public class RoleManager:BaseManagerRole>
 {
 }
}

 

二、展示層

Ninesky.Web/Areas/Control/Controllers【右鍵】->添加->控制器。選擇 MVC5 控制器 – 空, 輸入控制器名稱RoleController。

在控制器中引入命名空間Ninesky.Core;

添加變量private RoleManager roleManager = new RoleManager();

為控制器添加身份驗證[AdminAuthorize]

1、消息提示

在進行操作的時候經常會需要對操作成功、失敗、發生錯誤進行提示,所以專門做一個提示的模型類Prompt。

1)、添加類

Ninesky.Web/Models【右鍵】->添加->類  輸入類名Prompt

復制代碼 代碼如下:
using System.Collections.Generic;namespace Ninesky.Web.Models{ /// summary> /// 提示 /// /summary> public class Prompt { /// summary> /// 標題 /// /summary> public string Title { get; set; } /// summary> /// 消息 /// /summary> public string Message { get; set; } /// summary> /// 按鈕組 /// /summary> public Liststring> Buttons { get; set; } }}

2、在控制器中引入類的命名空間

在Rolecontroller中引用命名空間Ninesky.Web.Models。

3、添加視圖

在Ninesky.Web/Areas/Control/Views/Shared【右鍵】->添加->視圖

 

@model Ninesky.Web.Models.Prompt

@{
 ViewBag.Title = Model.Title;
}

@section SideNav{@Html.Partial("SideNavPartialView")}

ol class="breadcrumb">
 li>span class="glyphicon glyphicon-home">/span> @Html.ActionLink("首頁", "Index", "Home")/li>
 li class="active">@Model.Title/li>
/ol>

div class="panel panel-default">
 div class="panel-heading">div class="panel-title">@Model.Title/div>/div>
 div class="panel-body">
  p>@Html.Raw(Model.Message)/p>
  @if(Model.Buttons!=null  Model.Buttons.Count > 0) {
  p>
   @foreach(var item in Model.Buttons)
   {
    @Html.Raw(item+ "nbsp;nbsp;")

   }
  /p>
  }
 /div>
/div>

2、管理員列表

1)、返回列表方法(Json方式)

在控制中添加方法 ListJson() ,返回類型 JsonResoult

/// summary>
  /// 列表【Json】
  /// /summary>
  /// returns>/returns>
  public JsonResult ListJson()
  {
   return Json(roleManager.FindList());
  }

2、添加角色首頁視圖

在index()方法【右鍵】->添加視圖

@{
 ViewBag.Title = "角色管理";
}

@section SideNav{@Html.Partial("SideNavPartialView")}

ol class="breadcrumb">
 li>span class="glyphicon glyphicon-home">/span> @Html.ActionLink("首頁", "Index", "Home")/li>
 li>@Html.ActionLink("用戶管理", "Index", "User")/li>
 li class="active">@Html.ActionLink("角色管理", "Index", "Role")/li>
/ol>

table id="admingrid">/table>
@section style{
 @Styles.Render("~/Content/bootstrapplugincss")
}

@section scripts{
 @Scripts.Render("~/bundles/jqueryval")
 @Scripts.Render("~/bundles/bootstrapplugin")
 script type="text/javascript">
  $(document).ready(function () {
   //表格
   var $table = $('#admingrid');
   $table.bootstrapTable({
    showRefresh: true,
    showColumns: true,
    showFooter: true,
    method: "post",
    url: "@Url.Action("ListJson")",
    columns: [
     { title: "ID", field: "RoleID" },
     { title: "名稱", field: "Name", formatter: function (value, row, index) { return "a href='@Url.Action("Modify", "Role")/" + row.RoleID + "'>" + value + "/a>" } },
     { title: "說明", field: "Description" },
     { title: "操作", field: "RoleID", formatter: function (value) { return "a class='btn btn-sm btn-danger' data-operation='deleterole' data-value='" + value + "'>刪除/a>" } }
    ],
    onLoadSuccess: function () {
     //刪除按鈕
     $("a[data-operation='deleterole']").click(function () {
      var id = $(this).attr("data-value");
      BootstrapDialog.confirm("你確定要刪除" + $(this).parent().parent().find("td").eq(1).text() + "嗎?", function (result) {
       if (result) {
        $.post("@Url.Action("DeleteJson", "Role")", { id: id }, function (data) {
         if (data.Code == 1) {
          BootstrapDialog.show({
           message: "刪除角色成功",
           buttons: [{
            icon: "glyphicon glyphicon-ok",
            label: "確定",
            action: function (dialogItself) {
             $table.bootstrapTable("refresh");
             dialogItself.close();
            }
           }]

          });
         }
         else BootstrapDialog.alert(data.Message);
        }, "json");
       }
      });
     });
     //刪除按鈕結束
    }
   });
   //表格結束
  });
 /script>
}

3、導航視圖

導航視圖顯示在視圖的左側,對該控制器下的功能進行導航

Ninesky.Web/Areas/Control/Views/Role【右鍵】->添加->視圖

div class="panel panel-default">
 div class="panel-heading">
  div class="panel-title">span class="glyphicon glyphicon-user">/span> 用戶管理/div>
 /div>
 div class="panel-body">
  div class="list-group">
   div class="list-group-item">span class="glyphicon glyphicon-plus">/span> @Html.ActionLink("角色添加", "Add", "Role")/div>
   div class="list-group-item">span class="glyphicon glyphicon-list">/span> @Html.ActionLink("角色管理", "Index", "Role")/div>
  /div>
 /div>
/div>

4、添加角色

1)、添加方法

在控制器中添加Add方法

復制代碼 代碼如下:
/// summary> /// 添加 /// /summary> /// returns>/returns> public ActionResult Add() { return View(); }

2)、添加視圖

在方法上右鍵添加視圖

 

@model Ninesky.Core.Role

@{
 ViewBag.Title = "添加角色";
}

@section SideNav{@Html.Partial("SideNavPartialView")}

ol class="breadcrumb">
 li>span class="glyphicon glyphicon-home">/span> @Html.ActionLink("首頁", "Index", "Home")/li>
 li>@Html.ActionLink("用戶管理", "Index", "User")/li>
 li>@Html.ActionLink("角色管理", "Index", "Role")/li>
 li class="active">添加角色/li>
/ol>

@using (Html.BeginForm()) 
{
 @Html.AntiForgeryToken()
 
 div class="form-horizontal">
  @Html.ValidationSummary(true, "", new { @class = "text-danger" })
  div class="form-group">
   @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
   /div>
  /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>
}

@section Scripts {
 @Scripts.Render("~/bundles/jqueryval")
}

3)、添加提交數據的接收處理方法

在控制器中添加Add方法的post方法

[HttpPost]
  [ValidateAntiForgeryToken]
  public ActionResult Add(Role role)
  {
   if (ModelState.IsValid)
   {
    if (roleManager.Add(role).Code == 1)
    {
     return View("Prompt", new Prompt() { Title = "添加角色成功",
      Message ="你已成功添加了角色【"+ role.Name+"】",
      Buttons = new Liststring>() { "a href=\"" + Url.Action("Index", "Role") + "\" class=\"btn btn-default\">角色管理/a>", "a href=\"" + Url.Action("Add", "Role") + "\" class=\"btn btn-default\">繼續添加/a>"}
     });
    }
   }
   return View(role);
  }

5、管理員資料修改

1)、添加方法

在控制器中添加Modify方法。

/// summary>
  /// 修改
  /// /summary>
  /// param name="id">RoleID/param>
  /// returns>/returns>
  public ActionResult Modify(int id)
  {
   var _role = roleManager.Find(id);
   if(_role == null) return View("Prompt", new Prompt()
   {
    Title = "錯誤",
    Message = "ID為【" + id + "】的角色不存在",
    Buttons = new Liststring>() { "a href=\"" + Url.Action("Index", "Role") + "\" class=\"btn btn-default\">角色管理/a>"}
   });
   return View(_role);
  }

2)、添加視圖

在方法中右鍵添加視圖

代碼如下:

@model Ninesky.Core.Role

@{
 ViewBag.Title = Model.Name;
}

@section SideNav{@Html.Partial("SideNavPartialView")}

ol class="breadcrumb">
 li>span class="glyphicon glyphicon-home">/span> @Html.ActionLink("首頁", "Index", "Home")/li>
 li>@Html.ActionLink("用戶管理", "Index", "User")/li>
 li>@Html.ActionLink("角色管理", "Index", "Role")/li>
 li class="active">修改/li>
/ol>


@using (Html.BeginForm())
{
 @Html.AntiForgeryToken()
 
 div class="form-horizontal">
  @Html.ValidationSummary(true, "", new { @class = "text-danger" })
  @Html.HiddenFor(model => model.RoleID)

  div class="form-group">
   @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
   /div>
  /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>
}

@section Scripts {
 @Scripts.Render("~/bundles/jqueryval")
}

3)、添加提交數據的接收處理方法

在控制器中添加post方式的提交處理方法Modify方法。

[HttpPost]
  [ValidateAntiForgeryToken]
  public ActionResult Modify(Role role)
  {
   if (ModelState.IsValid)
   {
    var _resp = roleManager.Update(role);
    if (_resp.Code == 1) return View("Prompt", new Prompt()
    {
     Title = "修改角色成功",
     Message = "你已成功修改了角色【" + role.Name + "】",
     Buttons = new Liststring>() { "a href=\"" + Url.Action("Index", "Role") + "\" class=\"btn btn-default\">角色管理/a>", "a href=\"" + Url.Action("Modify", "Role", new { id = role.RoleID }) + "\" class=\"btn btn-default\">查看/a>", "a href=\"" + Url.Action("Add", "Role") + "\" class=\"btn btn-default\">添加/a>" }
    });
    else return View("Prompt", new Prompt()
    {
     Title = "修改角色失敗",
     Message = "失敗原因:"+ _resp.Message,
     Buttons = new Liststring>() { "a href=\"" + Url.Action("Index", "Role") + "\" class=\"btn btn-default\">角色管理/a>", "a href=\"" + Url.Action("Modify", "Role", new { id = role.RoleID }) + "\" class=\"btn btn-default\">返回/a>"}
    });
   }
   else return View(role);
  }

6、刪除角色

在控制器中添加Modify方法。

/// summary>
  /// 刪除【Json】
  /// /summary>
  /// param name="id">RoleID/param>
  /// returns>/returns>
  [HttpPost]
  public JsonResult DeleteJson(int id)
  {
   return Json(roleManager.Delete(id));
  }

角色功能完成,按F5瀏覽器中預覽效果

 ---------------------------------------------------------------------------------------

代碼見:https://ninesky.codeplex.com/SourceControl/latest

代碼下載:https://ninesky.codeplex.com 點擊SOURCE CODE 點擊Download下載源文件。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • ASP.NET Core 數據保護(Data Protection 集群場景)下篇
  • ASP.NET Core 數據保護(Data Protection)中篇
  • ASP.NET Core 數據保護(Data Protection)上篇
  • ASP.NET Core Kestrel 中使用 HTTPS (SSL)
  • ASP.NET Core集成微信登錄
  • 微信搶紅包ASP.NET代碼輕松實現
  • 基于ASP.NET實現日期轉為大寫的漢字
  • ASP.NET MVC5網站開發之用戶資料的修改和刪除3(七)
  • ASP.NET MVC5網站開發之用戶添加和瀏覽2(七)
  • ASP.NET 程序員都非常有用的85個工具

標簽:湘西 湖北 焦作 銅陵 綏化 試駕邀約 欽州 無錫

巨人網絡通訊聲明:本文標題《ASP.NET MVC5網站開發之用戶角色的后臺管理1(七)》,本文關鍵詞  ASP.NET,MVC5,網,站開,發之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET MVC5網站開發之用戶角色的后臺管理1(七)》相關的同類信息!
  • 本頁收集關于ASP.NET MVC5網站開發之用戶角色的后臺管理1(七)的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    中文无字幕一区二区三区 | 欧美日韩国产免费一区二区 | 一区二区激情小说| 成人免费视频网站在线观看| 国产精品久久免费观看| 欧美tickling挠脚心丨vk| 亚洲v中文字幕| 免费在线观看日韩av| 一本一本大道香蕉久在线精品| 国产欧美精品区一区二区三区| 国产毛片精品视频| 99久久99久久精品免费| 久久蜜臀中文字幕| 国产一区二区三区日韩| 精品手机在线视频| 亚洲国产精品二十页| 国产成人一区在线| 午夜激情福利网| 中文字幕日韩精品一区| av欧美精品.com| 91黄色激情网站| 一区二区在线观看视频在线观看| 下面一进一出好爽视频| 欧美精选一区二区| 视频一区中文字幕国产| xxx在线播放| 日本一区二区三级电影在线观看| 豆国产96在线|亚洲| 福利所第一导航| 一区二区三区蜜桃| 久久久久久久无码| 2欧美一区二区三区在线观看视频| 国产在线一区二区综合免费视频| 日本免费网站视频| 亚洲精品视频免费看| 国产欧美视频一区| 欧美大片顶级少妇| 国产精品亚洲一区二区三区妖精| 婷婷社区五月天| 亚洲一区二区免费视频| 国产精品亚洲无码| 国产精品素人一区二区| 91丝袜国产在线播放| 91精品国产品国语在线不卡| 久久99国产精品久久99果冻传媒| 亚洲欧美综合7777色婷婷| 亚洲欧美区自拍先锋| 国产精品第13页| 91论坛在线播放| 日韩片之四级片| 国产91在线观看| 欧美日韩国产a| 久久成人羞羞网站| 一本色道**综合亚洲精品蜜桃冫| 亚洲午夜精品17c| 国产熟女一区二区| 亚洲欧美日韩国产综合在线| 欧美bbbbb性bbbbb视频| 欧美韩国日本一区| 亚洲乱妇老熟女爽到高潮的片 | 国产精品亚洲一区二区无码| 亚洲精品在线观看网站| av电影一区二区| 日韩精品一区二区三区三区免费| 国产成人精品亚洲日本在线桃色| 欧美日韩黄色一区二区| 国产麻豆视频一区二区| 欧美色手机在线观看| 精品亚洲国产成人av制服丝袜| 真实国产乱子伦对白在线| 男男视频亚洲欧美| 色视频一区二区| 老司机精品视频在线| 在线看日本不卡| 激情综合色播激情啊| 精品污污网站免费看| 国产精品一区在线| 51精品秘密在线观看| 成人永久aaa| 日韩精品一区二区三区在线观看 | 亚洲一二三四久久| 永久免费观看片现看| 亚洲成人资源在线| 91传媒免费观看| 麻豆视频观看网址久久| 91国模大尺度私拍在线视频| 精品伊人久久久久7777人| 欧美日韩在线三区| 国产999精品久久久久久| 日韩欧美亚洲另类制服综合在线| 白白色亚洲国产精品| 国产亚洲精品超碰| 粉嫩av懂色av蜜臀av分享| 亚洲欧美日韩在线| 久久av红桃一区二区禁漫| 免费久久99精品国产| 欧美日韩aaa| 99视频一区二区三区| 欧美激情在线一区二区| 亚洲做受高潮无遮挡| 天堂成人免费av电影一区| 91黄色免费看| 成人av影院在线| 欧美国产精品v| 亚洲国产天堂av| 奇米影视一区二区三区| 欧美猛男gaygay网站| 久久亚洲一区二区三区四区| 色天使在线视频| 天天做天天摸天天爽国产一区| 欧美婷婷六月丁香综合色| 波多野结衣中文字幕一区二区三区| 久久久久国产一区二区三区四区 | 日韩欧美中文一区二区| 欧美午夜精品一区二区| 亚洲免费观看高清完整版在线观看| 日韩精品一区二区三区在线视频| 激情五月播播久久久精品| 欧美成va人片在线观看| www.色天使| 日本不卡中文字幕| 日韩一二三四区| 男男做爰猛烈叫床爽爽小说 | 看全色黄大色黄女片18| 尤物av一区二区| 在线观看免费亚洲| 美女又黄又免费的视频| 亚洲在线观看免费| 欧美日韩在线免费视频| 亚洲高清无码久久| 亚洲第一激情av| 91精品在线一区二区| 亚洲一级av无码毛片精品| 首页欧美精品中文字幕| 日韩欧美国产电影| 少妇久久久久久久久久| 精品亚洲aⅴ乱码一区二区三区| 亚洲精品在线观| 国产小视频你懂的| 成人午夜伦理影院| 亚洲免费观看高清完整版在线| 在线免费精品视频| 国产一级免费片| 美腿丝袜一区二区三区| 久久久不卡网国产精品二区| 性色国产成人久久久精品| 成人黄色a**站在线观看| 亚洲久草在线视频| 欧美日韩国产经典色站一区二区三区| 日本50路肥熟bbw| 欧美aaa在线| 国产区在线观看成人精品| 欧美激情图片小说| 色哟哟网站在线观看| 天堂影院一区二区| 久久精品网站免费观看| 色又黄又爽网站www久久| 黑人无套内谢中国美女| 日韩不卡一区二区三区| 久久久亚洲精品石原莉奈| 久久国产精品国语对白| 成人做爰69片免费| 美女mm1313爽爽久久久蜜臀| 欧美韩国日本综合| 欧美性生活一区| 少妇按摩一区二区三区| 国产夫妻精品视频| 一区二区三区精品视频| 精品福利视频一区二区三区| 中文字幕另类日韩欧美亚洲嫩草| 国产伦理在线观看| 狠狠色丁香久久婷婷综合_中 | 国产精品一区二区你懂的| 中文字幕一区二区三区乱码在线| 欧美午夜精品久久久久久超碰 | 亚洲波多野结衣| wwwxxxx在线观看| 蜜桃久久久久久| 亚洲人妖av一区二区| 日韩一区二区三区在线观看| 女人裸体性做爰全过| 中文字幕在线播放一区二区| 另类人妖一区二区av| 亚洲视频狠狠干| 日韩精品在线看片z| 国产精品久久久久久久精| 久久人人妻人人人人妻性色av| 国产激情视频一区二区在线观看| 亚洲一区二区3| 国产色产综合色产在线视频| 欧美日韩综合不卡| 亚洲天堂精品一区| 在线精品视频播放| 国产91精品一区二区| 天天射综合影视| 亚洲欧洲在线观看av| 日韩欧美一级片| 欧美性感一区二区三区| 国产主播av在线| 午夜男人的天堂|