Как отобразить коллекцию в представлении проекта ASP.NET MVC 4 Razor?

У меня есть следующая модель:

public class ContractPlain
{
    public int Id { get; set; }
    public Guid ContractGuid { get; set; }
    public int SenderId { get; set; }
    public int RecvId { get; set; }
    public int ContractType { get; set; }
    public string ContractStatus { get; set; }
    public DateTime CreatedTime { get; set; }
    public DateTime CreditEnd { get; set; }
}

public class Contrtacts
{
    List<ContractPlain> listOutput;

    public void Build(List<ContractPlain> listInput)
    {
        listOutput = new List<ContractPlain>();
    }

    public List<ContractPlain> GetContracts()
    {
        return listOutput;
    }

    internal void Build(List<contract> currentContracts)
    {
        throw new NotImplementedException();
    }
}

Как вы можете видеть, я определил целую коллекцию.

Почему?

Мне нужно отобразить данные в таблице для пользователя, потому что есть несколько строк, принадлежащих точному/уникальному пользователю (например, 20-30 предметов магазина относятся к одному клиенту).

Итак, я получаю данные из БД с помощью ADO.NET Entity. Связанный вопрос с экземпляром модели в Controller выполняется, и у меня нет проблем с этим, я делаю только с вопросом рендеринга.

Я думаю, он может быть использован с материалом @for, но не знал, как лучше было бы использовать особенно мою пользовательскую модель.

Итак, как я могу визуализировать данные в View с помощью моей модели?

Спасибо!

Ответ 1

См. представление ниже. Вы просто просматриваете свою коллекцию и показываете Контракты.

Контроллер:

public class ContactsController : Controller
{
   public ActionResult Index()
   {
      var model = // your model

      return View(model);
   }
}

Вид:

<table class="grid">
<tr>
    <th>Foo</th>
</tr> 

<% foreach (var item in Model) { %>

<tr>
    <td class="left"><%: item.Foo %></td>
</tr>

<% } %>

</table>

Бритва:

@model IEnumerable<ContractPlain>

<table class="grid">
<tr>
    <th>Foo</th>
</tr> 

@foreach (var item in Model) {

<tr>
    <td class="left"><@item.Foo></td>
</tr>

@}

</table>

Ответ 2

Если ваше действие возвращает List контрактов, вы можете сделать следующее в представлении:

@model IEnumerable<ContractPlain>

@foreach(ContractPlain contract in Model) 
{
    <ul>
        <li>@contract.ContractGuid</li>
        <li>@contract.SenderId</li>
        <li>@contract.ContractStatus</li>
        <li>@contract.CreditEnd</li>
    </ul>
}