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 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)
{
if (value)

@ -21,3 +21,11 @@
}
}
@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 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; }

@ -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}")]

@ -16,14 +16,17 @@ namespace UserCenter.Areas.Admin.Controllers
private readonly ILogger<AjaxController> _logger;
private readonly IRepository<Role> _roleRepo;
private readonly IRepository<Permission> _permissionRepo;
private readonly IRepository<PermissionCategory> _permissionCategoryRepo;
public AjaxController(ILogger<AjaxController> logger,
IRepository<Role> roleRepo,
IRepository<Permission> permissionRepo)
IRepository<Permission> permissionRepo,
IRepository<PermissionCategory> 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
}
}

@ -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<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)
@ -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);
}
}
}
Loading…
Cancel
Save