2013-06-28 3 views
10

У меня есть следующие модели:Как отобразить коллекцию в представлении проекта 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

Да, зайдите в список и покажите каждый Контракт. –

ответ

11

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

Контроллер:

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> 

Razor:

@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> 
+0

- ваш код, приемлемый для ASP.NET MVC 4 Razor? –

+0

Это не Бритва, но может быть легко адаптирована ... –

4

Если действие возвращает 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> 
}