【问题标题】:How do you create a view that is specific to an object you create with the database?如何创建特定于使用数据库创建的对象的视图?
【发布时间】:2021-06-11 20:00:31
【问题描述】:

我正在做一个爱好项目,一个错误跟踪器。 我希望能够使用我的数据库创建一个项目,我将能够单击该项目,然后获得一个视图,我可以在其中记录有关该项目的信息并能够为该项目制作票证。

我制作了两个模型,一个是项目模型,一个是工单模型,我在它们之间创建了一对多的关系。我还制作了两个控制器,一个用于项目,一个用于票证。 项目和工单都可以执行 CRUD 操作。唯一的问题是我真的不知道如何将它们放在项目中,以获取有关单个项目的详细信息。 我有模型之间的关系。但是如何获得特定于我的项目的视图?

我的模型

    public class Project
    {
        [Key]
        public int Project_Id { get; set; }
        [Required]
        public string Name { get; set; }
        [Required]
        public string Description { get; set; }
        public DateTime Created { get; set; }

        List<Ticket> Tickets { get; set; }
    }

public class Ticket
    {
        [Key]
        public int Ticket_Id { get; set; }
        [Required]
        public string TicketName { get; set; }
        [Required]
        public string TicketDescription { get; set; }

        public DateTime TicketCreated { get; set; }

        public string TicketPriority { get; set; }

        public string TicketType { get; set; }

        [ForeignKey("Project")]
        public int Project_Id { get; set; }
        public Project Project { get; set; }

    }

【问题讨论】:

    标签: asp.net-mvc asp.net-core entity-framework-core


    【解决方案1】:

    我为你的情况写了一个代码,它可以帮助你

    模型

      public class Procedure_s 
    {
        [Key]
        [HiddenInput(DisplayValue = false)]
        public int PrId { get; set; }
        [Required]
        public string PrName { get; set; }
        public string PrDescribe { get; set; }
        [Required]
        [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
        public DateTime PrStartDate { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
        public DateTime PrEndDate { get; set; }
        public string PrNote { get; set; }
    
        // foreign Keys
        public int PtyId { get; set; }
        [ForeignKey("PtyId")]
        public virtual ProceType ProceType { get; set; }
    
    }
    
     public class ProceType
    {
        [Key]
        [HiddenInput(DisplayValue = false)]
        public int PtyId { get; set; }
        [Required]
        public string PtyName { get; set; }
        public string PtyNote { get; set; }
    
        //connected tables 
        public virtual IList<Procedure_s> Procedure_s { get; set; }
    

    控制器: 详细方法

           // GET: ProceTypes/Details/5
        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }
    
            var proceType = await _context.ProceType
                .Include(p => p.Procedure_s)
                .FirstOrDefaultAsync(m => m.PtyId == id);
            if (proceType == null)
            {
                return NotFound();
            }
    
            return View(proceType);
        }
    

    查看: 详情页

    @model DirManageSys.Models.TaskSys.ProceType
    
    @{
        ViewData["Title"] = "Details";
    }
    
    <h1>Details</h1>
    
    <div>
        <h4>ProceType</h4>
        <hr />
        <dl class="row">
            <dt class="col-sm-2">
                @Html.DisplayNameFor(model => model.PtyName)
            </dt>
            <dd class="col-sm-10">
                @Html.DisplayFor(model => model.PtyName)
            </dd>
            <dt class="col-sm-2">
                @Html.DisplayNameFor(model => model.PtyNote)
            </dt>
            <dd class="col-sm-10">
                @Html.DisplayFor(model => model.PtyNote)
            </dd>
        </dl>
    </div>
    <div>
        <a asp-action="Edit" asp-route-id="@Model.PtyId">Edit</a> |
        <a asp-action="Index">Back to List</a>
    </div>
    
    <table id="tblData" class="table table-hover table-bordered text-black-50" style="width:100%">
        <thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.Procedure_s[0].PrName)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Procedure_s[0].PrStartDate)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Procedure_s[0].PrEndDate)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Procedure_s[0].PrDescribe)
                </th>
                
                <th>
                    @Html.DisplayNameFor(model => model.Procedure_s[0].PrNote)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Procedure_s[0].ProceType)
                </th>
                <th></th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model.Procedure_s)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.PrName)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.PrStartDate)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.PrEndDate)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.PrDescribe)
                    </td>
                    
                    <td>
                        @Html.DisplayFor(modelItem => item.PrNote)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.ProceType.PtyName)
                    </td>
                    
                    <td>
                        <a asp-action="Edit" asp-route-id="@item.PrId">Edit</a> |
                        <a asp-action="Details" asp-route-id="@item.PrId">Details</a> |
                        <a asp-action="Delete" asp-route-id="@item.PrId">Delete</a>
                    </td>
                </tr>
            }
        </tbody>
    </table>
    

    此代码在过程类型的详细信息页面上显示过程表, 哪个查看

    两个模型的一对多关系

    在剃须刀页面上显示第一个模型的信息和第二个模型的表格

    【讨论】:

    • 谢谢!我将通过它:),您将方法放在哪个控制器中?
    • 不客气,ProceType 控制器中的这个方法,注意它也可以用于细节或索引
    猜你喜欢
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2021-07-09
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多