【问题标题】:ASP.NET Core MVC application for ticket management用于票证管理的 ASP.NET Core MVC 应用程序
【发布时间】:2021-03-08 21:31:10
【问题描述】:

我刚开始学习 ASP.NET Core MVC,我对其进行了评估,因此要求如下

编写用于工单管理的 ASP.NET Core MVC 应用程序,该应用程序应该有两种类型的用户 - 管理员和员工。

员工用户应该能够使用以下数据(标题和描述字段)创建工单并在表格视图中查看他的工单列表,管理员应该能够看到收到的工单列表并且可以批准或拒绝票证:

员工用户页面:

  1. 主页:应该有表格 UI(列:工单标题、工单描述、工单状态)和按钮(创建工单)。

  2. 创建工单页面:它应该有工单标题和描述字段以及提交按钮,所以一旦他填写数据并单击提交,他应该导航到主页,新工单应该出现在表中,并且值状态应为“已发送”。

管理页面:

  1. 主页:应该有表格 UI(列:工单标题、工单描述、员工姓名、工单状态、操作),在操作列中有两个图标按钮(批准和拒绝),所以一旦他点击批准按钮然后工单状态应更改为批准,因此如果员工登录,他应该会看到工单状态为“已批准”,如果管理员单击拒绝按钮,则会发生相同的过程。

那么我应该为模型创建 3 个模块(工单、员工和管理员)吗?

我还为数据库做了一个小的ER图,对吗?

Ticket Management ER Diagram

请帮忙

【问题讨论】:

    标签: c# sql asp.net-core asp.net-core-mvc entity-relationship


    【解决方案1】:

    是的,您至少需要 TicketEmployeeAdmin 模型类来匹配您的 ER 图。

    例子:

    public class Employee
    {
       public int EmployeeId { get; set; }
       public string EmployeeName { get; set; }
       public string EmployeeUsername { get; set; }
       public string Password { get; set; }
    }
    

    【讨论】:

      【解决方案2】:

      我不太明白你为什么在这里做这么多工作,

      您的应用程序中应该有一个用户,然后该用户具有用户级别。 我不太清楚您是否使用身份。如果是这样,您只需在 ApplicationUser 中添加 UserState。

      示例: ApplicationDbContext.cs

      public class ApplicationDbContext {
      ...
          public DbSet<Ticket> Tickets {get;set;}
          public DbSet<TicketMessage> TicketMessages {get;set;}
      ...
      }
      

      用户状态.cs

      • 我在这里使用字节来减少数据库中的字节。 | 1 个字节而不是 4 个字节
      public enum UserState : byte {
          Employee,
          Admin
      }
      

      TicketState.cs

      public enum TicketState: byte {
          open,
          withdrawn,
          Closed
      }
      

      ApplicationUser.cs

      public class ApplicationUser {
          public UserState State {get;set;}
          public IEnumerable<Ticket> Tickets {get;set;}
          public IEnumerable<TicketMessages> Messages {get;set;}
      }
      

      Ticket.cs //管理员不需要被引用你检查控制器/Razorpage如果查看页面的用户有权限的话!。

      public class Ticket {
          public Guid Id {get;set;}
          public String Title {get;set;}
          public String Description {get;set;}
          public TicketState State {get;set;}
          public String OwnerId {get;set;}
          public ApplicationUser Owner {get;set;}
      
          public IEnumerable<TicketMessages> Messages {get;set;}
      }
      

      TicketMessage.cs

      public class TicketMessage {
          public Guid Id {get;set;}
          public String Message {get;set;}
      
          public Guid TicketId {get;set;}
          public Ticket Ticket {get;set;}
          public String OwnerId {get;set;}
          public ApplicationUser Owner {get;set;}
      }
      

      然后,您可以通过 Identity 轻松创建策略,检查您是否被允许执行此操作(创建、更新、添加、删除、AddTicketMessage)

      如果您需要有关身份或其他方面的更多帮助,MSDN 已详细记录, https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-5.0&tabs=visual-studio

      【讨论】:

        猜你喜欢
        • 2019-06-30
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 2019-11-20
        • 2021-08-25
        • 2011-02-25
        • 1970-01-01
        相关资源
        最近更新 更多