2016-10-07 4 views
0

Я пытаюсь создать таблицу с вертикальным заголовком и динамическим числом столбцов. Я хочу использовать цикл ASP.NET MVC Razor и foreach для генерации столбцов.Таблица - Вертикальный заголовок и динамическое число столбцов

У меня есть постоянное количество заголовков (строк) и динамическое число столбцов, где каждый столбец имеет значение для каждой строки

Что я хочу получить:

Header1 Value1,Value2,Value3 
Header2 Value1,Value2,Value3 
Header3 Value1,Value2,Value3 

Модель:

public class RootViewModel 
{ 
    public List<Column> Columns { get; set; } 
} 
public class Column 
{ 
    public int Header1Value { get; set; } //Value1 
    public int Header2Value { get; set; } //Value2 
    public int Header3Value { get; set; } //Value3 
} 

Я действительно не знаю, как решить эту проблему, не используя «foreach» для каждого свойства.

+0

класса 'column' потребуется 4 свойства, по одному для каждого значения столбца, а затем все ваши потребности один' foreach' loop –

+0

У меня есть постоянное количество заголовков (строк) и динамическое число столбцов, каждое из которых имеет значение для каждой строки. – adamo94

+0

. Затем вашей модели представления требуется свойство для первого столбца и свойство коллекции для остальных столбцов, например 'string Name' и 'IEnumerable Значения', и тогда вам понадобится 2 цикла, один для генерации строки и 1-го столбца, и n внутренний цикл для значений –

ответ

3

Вам необходимо изменить ваши модели просмотра для отображения того, что вы хотите отобразить на экране.

public class RootViewModel 
{ 
    public List<RowViewModel> Rows { get; set; } 
} 

public class RowViewModel 
{ 
    public string Header{ get; set; } 
    public List<int> Values { get; set; } 
} 

так что с точки зрения вы можете создать таблицу с помощью

@model RootViewModel 
<table> 
    @foreach(var row in Model.Rows) 
    { 
     <tr> 
      <td>@row.Header</td> 
      @foreach(var value in row.Values) 
      { 
       <td>@value</td> 
      } 
     </tr> 
    } 
</table> 
Смежные вопросы