Asp.net mvc 如何创建特定于使用数据库创建的对象的视图?
我正在做一个爱好项目一个bug追踪器。 我希望能够用我的数据库创建一个项目,我可以点击它,然后得到一个视图,在那里我可以记录项目的信息,并且能够为项目制作票证 我制作了两个模型,一个是项目模型,一个是票证模型,我在它们之间创建了一对多的关系。我还做了两个控制器,一个用于项目,一个用于票据。 项目和票证都可以执行CRUD操作。唯一的问题是,我真的不知道如何将它们组合到项目中,以获得单个项目的详细信息。 我和模特之间有关系。但是如何获得特定于我的项目的视图呢 我的车型Asp.net mvc 如何创建特定于使用数据库创建的对象的视图?,asp.net-mvc,asp.net-core,entity-framework-core,Asp.net Mvc,Asp.net Core,Entity Framework Core,我正在做一个爱好项目一个bug追踪器。 我希望能够用我的数据库创建一个项目,我可以点击它,然后得到一个视图,在那里我可以记录项目的信息,并且能够为项目制作票证 我制作了两个模型,一个是项目模型,一个是票证模型,我在它们之间创建了一对多的关系。我还做了两个控制器,一个用于项目,一个用于票据。 项目和票证都可以执行CRUD操作。唯一的问题是,我真的不知道如何将它们组合到项目中,以获得单个项目的详细信息。 我和模特之间有关系。但是如何获得特定于我的项目的视图呢 我的车型 public clas
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; }
公共类项目
{
[关键]
公共int项目_Id{get;set;}
[必需]
公共字符串名称{get;set;}
[必需]
公共字符串说明{get;set;}
已创建公共日期时间{get;set;}
列出票证{get;set;}
}
公务舱票
{
[关键]
公共整数票证{get;set;}
[必需]
公共字符串TicketName{get;set;}
[必需]
公共字符串TicketDescription{get;set;}
public DateTime TicketCreated{get;set;}
公共字符串TicketPriority{get;set;}
公共字符串TicketType{get;set;}
[外键(“项目”)]
公共int项目_Id{get;set;}
公共项目{get;set;}
}
我为类似您的情况编写了一个代码,它可以帮助您
型号
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; }
公共类程序
{
[关键]
[HiddenInput(DisplayValue=false)]
公共int PrId{get;set;}
[必需]
公共字符串PrName{get;set;}
公共字符串prdescripe{get;set;}
[必需]
[DisplayFormat(DataFormatString=“{0:yyyy/MM/dd}”)]
公共日期时间PrStartDate{get;set;}
[数据类型(DataType.Date)]
[DisplayFormat(DataFormatString=“{0:yyyy/MM/dd}”)]
公共日期时间PrEndDate{get;set;}
公共字符串PrNote{get;set;}
//外键
公共int PtyId{get;set;}
[外键(“PtyId”)]
公共虚拟ProceType ProceType{get;set;}
}
公共类ProceType
{
[关键]
[HiddenInput(DisplayValue=false)]
公共int PtyId{get;set;}
[必需]
公共字符串PtyName{get;set;}
公共字符串PtyNote{get;set;}
//连接表
公共虚拟IList过程{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);
}
//GET:ProceTypes/Details/5
公共异步任务详细信息(int?id)
{
if(id==null)
{
返回NotFound();
}
var proceType=wait_context.proceType
.包括(p=>p.程序)
.FirstOrDefaultAsync(m=>m.PtyId==id);
if(proceType==null)
{
返回NotFound();
}
返回视图(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>
@model DirManageSys.Models.TaskSys.ProceType
@{
ViewData[“标题”]=“详细信息”;
}
细节
前体
@DisplayNameFor(model=>model.PtyName)
@DisplayFor(model=>model.PtyName)
@DisplayNameFor(model=>model.PtyNote)
@DisplayFor(model=>model.PtyNote)
编辑|
返回列表
@DisplayNameFor(model=>model.Procedure\u s[0].PrName)
@DisplayNameFor(model=>model.Procedure\u s[0].PrStartDate)
@Html.DisplayNameFor(model=>model.Procedure[0].PrEndDate)
@DisplayNameFor(model=>model.Procedure[0].prdescription)
@DisplayNameFor(model=>model.Procedure[0].PrNote)
@DisplayNameFor(model=>model.Procedure\u s[0].ProceType)
@foreach(模型程序中的var项目)
{
@DisplayFor(modelItem=>item.PrName)
@DisplayFor(modelItem=>item.PrStartDate)
@DisplayFor(modelItem=>item.PrEndDate)
@DisplayFor(modelItem=>item.prDescripte)
@DisplayFor(modeleItem=>item.PrNote)
@DisplayFor(modeleItem=>item.ProceType.PtyName)
编辑|
细节|
删除
}
此代码在proce type的详细信息页面上显示程序表,
哪一种观点是正确的
两个模型的一对多关系
在razor页面上,显示第一个模型的信息和第二个模型的表谢谢!我将浏览:),您将方法放在哪个控制器中的哪个位置?不客气,在ProceType控制器中使用此方法,请注意,它可以用于详细信息,也可以用于索引