Former-commit-id: 76ce1c9913400ebcba1335161b3743478353d668
TangShanKaiPing
wanggang 6 years ago
parent 9dca481c0b
commit 9ee2ff0919

@ -7,11 +7,14 @@ namespace Infrastructure.Extensions
{ {
public static class ViewDataDictionaryExtensions public static class ViewDataDictionaryExtensions
{ {
public static void SelectList<TResult>(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<TResult>(this ViewDataDictionary viewData, Expression<Func<object, TResult>> expression, Func<SelectList> getSelectListFunc, bool value = true) public static void SelectList<TResult>(this ViewDataDictionary viewData, Expression<Func<object, TResult>> expression, Func<SelectList> getSelectListFunc, bool value = true)
{ {
if (value) if (value)

@ -20,4 +20,12 @@
list = (ViewData[ViewData.ModelMetadata.PropertyName + "SelectList"] as SelectList) ?? new SelectList(new List<SelectListItem>()); list = (ViewData[ViewData.ModelMetadata.PropertyName + "SelectList"] as SelectList) ?? new SelectList(new List<SelectListItem>());
} }
} }
@list.FirstOrDefault(o => o.Value == Model?.ToString())?.Text @list.FirstOrDefault(o => o.Value == Model?.ToString())?.Text
@if (ViewData.ModelMetadata.PropertyName.EndsWith("Id"))
{
if (ViewData.Get((Guid)Model) != null)
{
@ViewData.Get((Guid)Model)
}
}

@ -1,3 +1,4 @@
using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Infrastructure.Application; using Infrastructure.Application;
@ -7,7 +8,8 @@ namespace Application.Models
public class EditPermissionModel : EditModel public class EditPermissionModel : EditModel
{ {
[Display(Name = "分类")] [Display(Name = "分类")]
public string CategoryName { get; set; } [DataType("SelectList")]
public Guid? CategoryId { get; set; }
[Display(Name = "名称"), Required] [Display(Name = "名称"), Required]
public string Name { get; set; } public string Name { get; set; }

@ -2,6 +2,7 @@ using Application.Domain.Entities;
using Infrastructure.Application; using Infrastructure.Application;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
namespace Application.Models namespace Application.Models
@ -13,6 +14,7 @@ namespace Application.Models
[RegularExpression("^[a-zA-Z0-9]+$", ErrorMessage = "")] [RegularExpression("^[a-zA-Z0-9]+$", ErrorMessage = "")]
[StringLength(30, MinimumLength = 5, ErrorMessage = "用户名长度为5-30")] [StringLength(30, MinimumLength = 5, ErrorMessage = "用户名长度为5-30")]
[Display(Name = "用户名")] [Display(Name = "用户名")]
[ReadOnly(true)]
public string UserName { get; set; } public string UserName { get; set; }
[StringLength(100, MinimumLength = 6, ErrorMessage = "密码长度范围为{2}-{1}")] [StringLength(100, MinimumLength = 6, ErrorMessage = "密码长度范围为{2}-{1}")]

@ -16,14 +16,17 @@ namespace UserCenter.Areas.Admin.Controllers
private readonly ILogger<AjaxController> _logger; private readonly ILogger<AjaxController> _logger;
private readonly IRepository<Role> _roleRepo; private readonly IRepository<Role> _roleRepo;
private readonly IRepository<Permission> _permissionRepo; private readonly IRepository<Permission> _permissionRepo;
private readonly IRepository<PermissionCategory> _permissionCategoryRepo;
public AjaxController(ILogger<AjaxController> logger, public AjaxController(ILogger<AjaxController> logger,
IRepository<Role> roleRepo, IRepository<Role> roleRepo,
IRepository<Permission> permissionRepo) IRepository<Permission> permissionRepo,
IRepository<PermissionCategory> permissionCategoryRepo)
{ {
this._logger = logger; this._logger = logger;
this._roleRepo = roleRepo; this._roleRepo = roleRepo;
this._permissionRepo = permissionRepo; this._permissionRepo = permissionRepo;
this._permissionCategoryRepo = permissionCategoryRepo;
} }
#region Role #region Role
@ -58,5 +61,15 @@ namespace UserCenter.Areas.Admin.Controllers
} }
#endregion Permission #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
} }
} }

@ -7,6 +7,7 @@ using Infrastructure.Web.Mvc;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Infrastructure.Extensions;
namespace UserCenter.Areas.Admin.Controllers namespace UserCenter.Areas.Admin.Controllers
{ {
@ -14,8 +15,11 @@ namespace UserCenter.Areas.Admin.Controllers
[Area(nameof(Admin))] [Area(nameof(Admin))]
public class PermissionController : CrudController<Permission, PagedListModel<EditPermissionModel>, EditPermissionModel, EditPermissionModel> public class PermissionController : CrudController<Permission, PagedListModel<EditPermissionModel>, EditPermissionModel, EditPermissionModel>
{ {
public PermissionController(IRepository<Permission> repo) : base(repo) private readonly AjaxController _ajax;
public PermissionController(IRepository<Permission> repo, AjaxController ajax) : base(repo)
{ {
this._ajax = ajax;
} }
public override IQueryable<Permission> Include(IQueryable<Permission> query) public override IQueryable<Permission> Include(IQueryable<Permission> query)
@ -25,12 +29,12 @@ namespace UserCenter.Areas.Admin.Controllers
public override void ToDisplayModel(Permission entity, EditPermissionModel model) 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) 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);
} }
} }
} }
Loading…
Cancel
Save