如何创建特定于使用数据库创建的对象的视图



我正在做一个业余项目,一个bug跟踪器。我希望能够用我的数据库创建一个项目,我可以点击它,然后获得一个视图,在那里我可以记录有关该项目的信息,并能够为该项目制作门票。

我制作了两个模型,一个是项目模型,然后是票证模型。我在它们之间创建了一对多的关系。我还制作了两个控制器,一个用于项目,另一个用于门票。项目和票证都可以执行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; }
}

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

型号

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>

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

两个模型的一对多关系

通过显示第一型号的信息和第二型号的表格

最新更新