Передача не прочитанных предметов из контроллера для просмотра - PullRequest
0 голосов
/ 29 марта 2011

Я хочу перейти к своему «Представлению», если в вызове есть нечитанное взаимодействие.

Это похоже на электронное письмо. Если в группе писем есть непрочитанное письмо, оно будет выделено жирным шрифтом. Я делаю что-то подобное.

У меня есть репозиторий, поэтому я делаю это ...

foreach(item in callRepo.All())
{
    if (item.Interactions.Count(x=>x.Unread==true)>0) 
    {
    }
}
return View(callRepo.All());

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


Вот так работает мой вид:

var CSSclass = "Readed"

foreach(item in callRepo.All())
{
  if (item.Interactions.Count(x=>x.Unread==true)>0){CSSclass="Unreaded"}
  <tr class=@CSSclass>}

Я не хочу относиться к этому делу с моей точки зрения.

Есть ли способ сделать это на моем контроллере?

.

Мой вопрос понятен? Извините за плохой английский. Tks

1 Ответ

0 голосов
/ 29 марта 2011

Сколько раз вы собираетесь вызывать этот метод хранилища (я уже насчитал 3)?

Я бы порекомендовал вам использовать модель вида:

public class MyViewModel
{
    public bool IsRead { get; set; }
    public IEnumerable<Interaction> Interactions { get; set; }
}

тогда в вашем контроллере:

public ActionResult Index()
{
    var items = callRepo.All();
    var model = items.Select(item => new MyViewModel
    {
        Interactions = item.Interactions,
        IsRead = item.Interactions.Any(x => x.Unread == true)
    });
    return View(model);
}

и ваш взгляд:

@model IEnumerable<MyViewModel>
<table>
    @Html.DisplayForModel()
</table>

и в соответствующем шаблоне отображения (~/Views/Shared/DisplayTemplates/MyViewModel.cshtml):

@model MyViewModel
@{
    var css = model.IsRead ? "read" : "unread";
}
<tr class="@css">
    ...
</tr>

Дальнейшее усовершенствование этого кода будет состоять в том, чтобы заменить свойство IEnumerable<Interaction> в модели представления на конкретный IEnumerable<InteractionViewModel> и использовать AutoMapper для вывода соответствия между моделью и моделью представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...