Razor Page登录后按员工部门过滤Fax列表需求
实现登录员工仅查看所属部门传真的解决方案
步骤1:获取当前登录员工的部门ID
在Fax/Index.cshtml.cs的OnGet方法中,通过当前登录用户标识获取对应员工信息,提取所属部门ID:
private readonly ApplicationDbContext _context; private readonly UserManager<Register> _userManager; // 构造函数注入依赖 public IndexModel(ApplicationDbContext context, UserManager<Register> userManager) { _context = context; _userManager = userManager; } public async Task<IActionResult> OnGetAsync() { // 获取当前登录用户 var currentUser = await _userManager.GetUserAsync(User); if (currentUser == null) { return RedirectToPage("/Account/Login"); } // 提取用户所属部门ID(假设Register实体的部门外键为DepartmentId) var userDeptId = currentUser.DepartmentId;
步骤2:过滤查询所属部门的传真
替换原有获取所有传真的逻辑,添加部门ID过滤条件:
// 查询当前用户部门下的所有传真(假设Fax实体包含DepartmentId字段) Faxes = await _context.Faxes .Where(f => f.DepartmentId == userDeptId) .ToListAsync(); return Page(); } // 页面绑定的传真列表 public List<Fax> Faxes { get; set; }
特殊关联场景处理
如果传真与部门的关联是通过中间实体(比如传真关联文档,文档关联部门),调整过滤逻辑即可:
Faxes = await _context.Faxes .Include(f => f.Document) // 关联中间实体 .Where(f => f.Document.DepartmentId == userDeptId) .ToListAsync();
可选:增强权限控制
在页面模型类上添加[Authorize]特性,确保未登录用户无法访问该页面:
[Authorize] public class IndexModel : PageModel { // 现有代码... }
内容的提问来源于stack exchange,提问作者hossam reda
相关产品推荐
相关产品推荐

