从MVC中的实体打印具有列表变量的表

时间:2015-02-13 18:55:48

标签: c# asp.net-mvc entity-framework asp.net-mvc-4 model-view-controller

我很长时间没有参加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; }

因此,对于每个彩票实体,我都会有一份工作清单。我正在通过控制器将值传递给View,如下所示:

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进行搜索以获得正确的抽奖。

我的怀疑开始了,如果我想为彩票做一张桌子,我可以做到(使用彩票模型)

@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表中打印public List<Worker> FuncionariosSorteados,但是通过模型我无法访问它!

3 个答案:

答案 0 :(得分:0)

我相信您需要遍历已创建的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>
}

答案 1 :(得分:0)

我很困惑,因为在你的行动中,你正在拉一个彩票记录并将其传递给你的观点,但在你看来,你正在迭代看似IEnumerable<Lottery>的内容。

由于您FuncionariosSorteados类型Model的访问Lottery没有问题,我假设该视图实际上正在使用IEnumerable<Lottery>。对于可枚举,您必须遍历列表并访问各个项目的属性。例如:

@model IEnumerable<Lottery>

@Model.FuncionariosSorteados <!-- fail -->

@foreach (var lottery in Model)
{
    @lottery.FuncionariosSorteados <!-- success -->
}

答案 2 :(得分:0)

对于您的第二个实体,您可以像这样创建它:

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 loup在列表中进行迭代