2014-10-13 2 views
0

У меня есть таблица с двумя столбцами, на которой я хочу отобразить список говорящих студентов в двух разных столбцах по полу. Все эти данные в модели представлена ​​в виде одного набора данных, но когда дело доходит до точки зрения я хотел бы разделить его, как показано нижеУсловная логика в режиме бритвы

Males           Females 
===========         ============== 
John           Jane 
James           Mary 

Как я могу реализовать эту логику на мой взгляд cshtml. Обратите внимание, что это таблица с двумя столбцами, и каждый будет перечислять данные.

Ниже приведен код бритвы, который я использовал.

<table width="100%" border="1" class="anothertable"> 
    <tr> 
     <td align="left" width="50%">MALES</td> 
     <td align="left" width="50%">FEMALES</td> 
    </tr> 
    @foreach (var rep in Model.Students) { 
     <tr> 
      <td align="left" border="0">@if (@rep.IsMale)){ 
       <br /> 
       <ol type="a"> 
        <li><span>@rep.Name</span> </li> 
       </ol> 
       } 
      </td> 
     else 
     { 
      <td align="left" border="0"> 
       <br /> 
       <ol type="a"> 
        <li>@rep.Name</li> 
       </ol> 
      </td> 
     } 
     </tr> 
    } 
</table> 
+1

Может ли вы показать код – Amit

+0

Это просто вопрос пробегает по отфильтрованным данным. Я не вижу, как это отличается от отображения каких-либо данных. Где вы застряли? –

+1

Где код, который вы пробовали и не работали? http://stackoverflow.com/help/how-to-ask – walther

ответ

1

Первых из всех, вы должны избегать любой логики на ваш взгляд; вся логика должна быть в контроллере.

Имея это в виду, вы можете попробовать следующий подход:

Определить класс вид модели для хранения данных в виде двух отдельных коллекций:

public class StudentsViewModel 
{ 
    public IEnumerable<Student> Males { get; set; } 
    public IEnumerable<Student> Females { get; set; } 
} 

В контроллере разделить данные:

В вашей папке представлений создайте два вида: - один для отображения результата метода SomeAction (типично)) - один частичный вид для отображения списка студента отделенного пола с целью повторного использования разметки

SomeAction вида

@model StudentsViewModel 

<div class="left-column"> 
    <span class="title">Males</span> 
    @Html.Partial("name-of-the-partial-view", @Model.Males) 
</div> 
<div class="right-column"> 
    <span class="title">Females</span> 
    @Html.Partial("name-of-the-partial-view", @Model.Females) 
</div> 

Частичный вид сделает список студентов:

@model IEnumerable<Student> 

<ul> 
@foreach(var student in Model) 
{ 
    <li>@student.Name</li> 
} 
</ul> 

Надеюсь, это поможет!

EDIT

Теперь, после того, как Вы отправили ваш код, это легче обнаружить проблему: вы не излучающие две ячейки таблицы для каждой строки, но только один. Когда вы перебираете коллекцию студентов, вы должны создать для каждого ученика строку с двумя ячейками. Чтобы сделать это, просто поставить пустую ячейку после имени студента мужского пола и перед именем женщин, как это:

<table width="100%" border="1" class="anothertable"> 
    <tr> 
     <td align="left" width="50%">MALES</td> 
     <td align="left" width="50%">FEMALES</td> 
    </tr> 
    @foreach (var rep in Model.Students) 
    { 
     <tr> 
      @if (@rep.IsMale)) 
      { 
       <td align="left" border="0"> 
        <br /> 
        <ol type="a"> 
         <li><span>@rep.Name</span> </li> 
        </ol> 
       </td> 
       <!-- emit an empty cell here --> 
       <td>&nbsp;</td> 
      } 
      else 
      { 
       <!-- emit an empty cell here --> 
       <td>&nbsp;</td> 
       <td align="left" border="0"> 
        <br /> 
        <ol type="a"> 
         <li>@rep.Name</li> 
        </ol> 
       </td> 
      } 
     </tr> 
    } 
</table> 
+0

Спасибо за ваши комментарии – imdondo

+0

@imdondo, см. Редактирование - он должен решить вашу проблему. – RePierre

+0

Спасибо @RePierre, но это все еще дает мне пустые строки – imdondo

0

Просто чтобы дать вам общее представление ....

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

вот псевдокод

@model List<Student> 

<div> 
<h2>Male</h2> 
<ul> 
@foreach(var maleStudent in Model.Where(g=>g.Gender == "Male")) 
{ 
<li>@maleStudent.Name</li> 
} 
</ul> 
</div> 

<div> 
<h2>Female</h2> 
<ul> 
@foreach(var femaleStudent in Model.Where(g=>g.Gender == "Female")) 
{ 
<li>@femaleStudent .Name</li> 
} 
</ul> 
</div> 
Смежные вопросы