在 MVC 中使用来自实体的列表变量打印 Table
Print Table with List Variable From Entities in MVC
我已经很久没有使用 MVC 了;我对此很陌生。所以,我有这两个实体:
// Entity Worker
[Display(Name = "ID")]
public Int32 Id { get; set; }
[Display(Name = "Número")]
public Int32 Numero { get; set; }
[Display(Name = "Nome")]
// Entity Lottery
public Int32 Id { get; set; }
[Display(Name = "Tipo")]
public String Tipo { get; set; }
[Display(Name = "Data")]
public DateTime Data { get; set; }
[Display(Name = "Observações")]
public List<Worker> FuncionariosSorteados { get; set; }
因此,对于每个彩票实体,我都会有一个工人列表。我通过控制器将值传递给视图,如下所示:
public ActionResult Details(int id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Lottery lottery = service.FindLottery(id);
if (sorteio == null)
{
return HttpNotFound();
}
return View(lottery);
}
服务是我连接到数据库的存储库(在这种情况下,他通过数据库中的 ID 进行搜索以获得正确的彩票。
这里我的疑问开始了,如果我想为彩票做一个table,我可以做到(使用彩票模型)
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Tipo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Data)
</td>
<td>
@Html.DisplayFor(modelItem => item.Observacoes)
</tr>
}
但是我怎样才能对 public List<Worker> FuncionariosSorteados
做同样的事情呢?我只想在 GridMvc table 中打印 public List<Worker> FuncionariosSorteados
,但是通过模型我无法访问它!
我认为您需要在已创建的 foreach
循环中遍历列表。像这样:
@foreach (var item in Model)
{
<table>
<tr>
<td>
@Html.DisplayFor(modelItem => item.Tipo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Data)
</td>
<td>
@Html.DisplayFor(modelItem => item.Observacoes)
</td>
</tr>
</table>
<table>
@foreach(var w in Model.FuncionariosSorteados )
{
<tr>
<td>@Html.DisplayFor(w => w.Id)</td>
<td>@Html.DisplayFor(w => w.Numero)</td>
</tr>
}
</table>
}
我很困惑,因为在您的操作中,您正在提取单个彩票记录并将其传递给您的视图,但在您的视图中,您正在迭代似乎是 IEnumerable<Lottery>
的内容。
由于从 Lottery
类型的 Model
访问 FuncionariosSorteados
没有任何问题,我假设该视图实际上使用的是 IEnumerable<Lottery>
。对于枚举,您必须遍历列表并访问各个项目的属性。例如:
@model IEnumerable<Lottery>
@Model.FuncionariosSorteados <!-- fail -->
@foreach (var lottery in Model)
{
@lottery.FuncionariosSorteados <!-- success -->
}
对于您的第二个实体,您可以这样创建它:
Entitie Lottery
public Lottery( )
{
FuncionariosSorteados = new List <Worker>();
}
public Int32 Id { get; set; }
[Display(Name = "Tipo")]
public String Tipo { get; set; }
[Display(Name = "Data")]
public DateTime Data { get; set; }
[Display(Name = "Observações")]
public virtual List<Worker> FuncionariosSorteados { get; set; }
然后在您的视图中,您可以使用 foreach
循环遍历列表
我已经很久没有使用 MVC 了;我对此很陌生。所以,我有这两个实体:
// Entity Worker
[Display(Name = "ID")]
public Int32 Id { get; set; }
[Display(Name = "Número")]
public Int32 Numero { get; set; }
[Display(Name = "Nome")]
// Entity Lottery
public Int32 Id { get; set; }
[Display(Name = "Tipo")]
public String Tipo { get; set; }
[Display(Name = "Data")]
public DateTime Data { get; set; }
[Display(Name = "Observações")]
public List<Worker> FuncionariosSorteados { get; set; }
因此,对于每个彩票实体,我都会有一个工人列表。我通过控制器将值传递给视图,如下所示:
public ActionResult Details(int id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Lottery lottery = service.FindLottery(id);
if (sorteio == null)
{
return HttpNotFound();
}
return View(lottery);
}
服务是我连接到数据库的存储库(在这种情况下,他通过数据库中的 ID 进行搜索以获得正确的彩票。
这里我的疑问开始了,如果我想为彩票做一个table,我可以做到(使用彩票模型)
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Tipo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Data)
</td>
<td>
@Html.DisplayFor(modelItem => item.Observacoes)
</tr>
}
但是我怎样才能对 public List<Worker> FuncionariosSorteados
做同样的事情呢?我只想在 GridMvc table 中打印 public List<Worker> FuncionariosSorteados
,但是通过模型我无法访问它!
我认为您需要在已创建的 foreach
循环中遍历列表。像这样:
@foreach (var item in Model)
{
<table>
<tr>
<td>
@Html.DisplayFor(modelItem => item.Tipo)
</td>
<td>
@Html.DisplayFor(modelItem => item.Data)
</td>
<td>
@Html.DisplayFor(modelItem => item.Observacoes)
</td>
</tr>
</table>
<table>
@foreach(var w in Model.FuncionariosSorteados )
{
<tr>
<td>@Html.DisplayFor(w => w.Id)</td>
<td>@Html.DisplayFor(w => w.Numero)</td>
</tr>
}
</table>
}
我很困惑,因为在您的操作中,您正在提取单个彩票记录并将其传递给您的视图,但在您的视图中,您正在迭代似乎是 IEnumerable<Lottery>
的内容。
由于从 Lottery
类型的 Model
访问 FuncionariosSorteados
没有任何问题,我假设该视图实际上使用的是 IEnumerable<Lottery>
。对于枚举,您必须遍历列表并访问各个项目的属性。例如:
@model IEnumerable<Lottery>
@Model.FuncionariosSorteados <!-- fail -->
@foreach (var lottery in Model)
{
@lottery.FuncionariosSorteados <!-- success -->
}
对于您的第二个实体,您可以这样创建它:
Entitie Lottery
public Lottery( )
{
FuncionariosSorteados = new List <Worker>();
}
public Int32 Id { get; set; }
[Display(Name = "Tipo")]
public String Tipo { get; set; }
[Display(Name = "Data")]
public DateTime Data { get; set; }
[Display(Name = "Observações")]
public virtual List<Worker> FuncionariosSorteados { get; set; }
然后在您的视图中,您可以使用 foreach
循环遍历列表