From 9ee2ff0919d03511ad4238a65d7965b3f9af0010 Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Fri, 18 Oct 2019 06:46:04 +0800 Subject: [PATCH] update Former-commit-id: 76ce1c9913400ebcba1335161b3743478353d668 --- .../Extensions/ViewDataDictionaryExtensions.cs | 9 ++++++--- .../Shared/DisplayTemplates/SelectList.cshtml | 10 +++++++++- .../Application/Models/EditPermissionModel.cs | 4 +++- .../Application/Models/EditUserModel.cs | 2 ++ .../Areas/Admin/Controllers/AjaxController.cs | 15 ++++++++++++++- .../Admin/Controllers/PermissionController.cs | 10 +++++++--- 6 files changed, 41 insertions(+), 9 deletions(-) diff --git a/projects/Infrastructure/Extensions/ViewDataDictionaryExtensions.cs b/projects/Infrastructure/Extensions/ViewDataDictionaryExtensions.cs index 406ebe06..0de0bc5b 100644 --- a/projects/Infrastructure/Extensions/ViewDataDictionaryExtensions.cs +++ b/projects/Infrastructure/Extensions/ViewDataDictionaryExtensions.cs @@ -7,11 +7,14 @@ namespace Infrastructure.Extensions { public static class ViewDataDictionaryExtensions { - public static void SelectList(this ViewDataDictionary viewData, string name, SelectList selectList) + public static void Add(this ViewDataDictionary viewData, object name, object value) { - viewData[name + "SelectList"] = selectList; + viewData[name.ToString()] = value; + } + public static object Get(this ViewDataDictionary viewData, object name) + { + return viewData[name.ToString()]; } - public static void SelectList(this ViewDataDictionary viewData, Expression> expression, Func getSelectListFunc, bool value = true) { if (value) diff --git a/projects/Infrastructure/Views/Shared/DisplayTemplates/SelectList.cshtml b/projects/Infrastructure/Views/Shared/DisplayTemplates/SelectList.cshtml index a4752775..67a5e25a 100644 --- a/projects/Infrastructure/Views/Shared/DisplayTemplates/SelectList.cshtml +++ b/projects/Infrastructure/Views/Shared/DisplayTemplates/SelectList.cshtml @@ -20,4 +20,12 @@ list = (ViewData[ViewData.ModelMetadata.PropertyName + "SelectList"] as SelectList) ?? new SelectList(new List()); } } -@list.FirstOrDefault(o => o.Value == Model?.ToString())?.Text \ No newline at end of file +@list.FirstOrDefault(o => o.Value == Model?.ToString())?.Text + +@if (ViewData.ModelMetadata.PropertyName.EndsWith("Id")) +{ + if (ViewData.Get((Guid)Model) != null) + { + @ViewData.Get((Guid)Model) + } +} \ No newline at end of file diff --git a/projects/UserCenter/Application/Models/EditPermissionModel.cs b/projects/UserCenter/Application/Models/EditPermissionModel.cs index 1f076097..8281e883 100644 --- a/projects/UserCenter/Application/Models/EditPermissionModel.cs +++ b/projects/UserCenter/Application/Models/EditPermissionModel.cs @@ -1,3 +1,4 @@ +using System; using System.ComponentModel.DataAnnotations; using Infrastructure.Application; @@ -7,7 +8,8 @@ namespace Application.Models public class EditPermissionModel : EditModel { [Display(Name = "分类")] - public string CategoryName { get; set; } + [DataType("SelectList")] + public Guid? CategoryId { get; set; } [Display(Name = "名称"), Required] public string Name { get; set; } diff --git a/projects/UserCenter/Application/Models/EditUserModel.cs b/projects/UserCenter/Application/Models/EditUserModel.cs index 99ba26ee..cafc6a7e 100644 --- a/projects/UserCenter/Application/Models/EditUserModel.cs +++ b/projects/UserCenter/Application/Models/EditUserModel.cs @@ -2,6 +2,7 @@ using Application.Domain.Entities; using Infrastructure.Application; using System; using System.Collections.Generic; +using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace Application.Models @@ -13,6 +14,7 @@ namespace Application.Models [RegularExpression("^[a-zA-Z0-9]+$", ErrorMessage = "用户名只能由数字和字母组成")] [StringLength(30, MinimumLength = 5, ErrorMessage = "用户名长度为5-30")] [Display(Name = "用户名")] + [ReadOnly(true)] public string UserName { get; set; } [StringLength(100, MinimumLength = 6, ErrorMessage = "密码长度范围为{2}-{1}")] diff --git a/projects/UserCenter/Areas/Admin/Controllers/AjaxController.cs b/projects/UserCenter/Areas/Admin/Controllers/AjaxController.cs index 61961048..4bf40a4a 100644 --- a/projects/UserCenter/Areas/Admin/Controllers/AjaxController.cs +++ b/projects/UserCenter/Areas/Admin/Controllers/AjaxController.cs @@ -16,14 +16,17 @@ namespace UserCenter.Areas.Admin.Controllers private readonly ILogger _logger; private readonly IRepository _roleRepo; private readonly IRepository _permissionRepo; + private readonly IRepository _permissionCategoryRepo; public AjaxController(ILogger logger, IRepository roleRepo, - IRepository permissionRepo) + IRepository permissionRepo, + IRepository permissionCategoryRepo) { this._logger = logger; this._roleRepo = roleRepo; this._permissionRepo = permissionRepo; + this._permissionCategoryRepo = permissionCategoryRepo; } #region Role @@ -58,5 +61,15 @@ namespace UserCenter.Areas.Admin.Controllers } #endregion Permission + + #region PermissionCategory + public SelectList GetPermissionCategorySelectList(Guid? selected) + { + var list = this._permissionCategoryRepo.ReadOnlyTable() + .Select(o => new { o.Id, Name = $"{o.Name}({o.Number})" }) + .ToList(); + return new SelectList(list, "Id", "Name", selected); + } + #endregion } } \ No newline at end of file diff --git a/projects/UserCenter/Areas/Admin/Controllers/PermissionController.cs b/projects/UserCenter/Areas/Admin/Controllers/PermissionController.cs index 6159a09d..4d91f77a 100644 --- a/projects/UserCenter/Areas/Admin/Controllers/PermissionController.cs +++ b/projects/UserCenter/Areas/Admin/Controllers/PermissionController.cs @@ -7,6 +7,7 @@ using Infrastructure.Web.Mvc; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Infrastructure.Extensions; namespace UserCenter.Areas.Admin.Controllers { @@ -14,8 +15,11 @@ namespace UserCenter.Areas.Admin.Controllers [Area(nameof(Admin))] public class PermissionController : CrudController, EditPermissionModel, EditPermissionModel> { - public PermissionController(IRepository repo) : base(repo) + private readonly AjaxController _ajax; + + public PermissionController(IRepository repo, AjaxController ajax) : base(repo) { + this._ajax = ajax; } public override IQueryable Include(IQueryable query) @@ -25,12 +29,12 @@ namespace UserCenter.Areas.Admin.Controllers public override void ToDisplayModel(Permission entity, EditPermissionModel model) { - model.CategoryName = entity.Category.GetFullName(); + this.ViewData.Add(entity.CategoryId,entity.Category.Name); } public override void ToModel(Permission entity, EditPermissionModel model) { - model.CategoryName = entity.Category.GetFullName(); + this.ViewData.SelectList(o=>model.CategoryId, () => this._ajax.GetPermissionCategorySelectList(model.CategoryId), model.CategoryId.HasValue); } } } \ No newline at end of file