2011-03-29 43 views
0

如果通話中存在任何未被發現的交互,我想傳遞給我的「查看」。從控制器傳遞未處理的項目以查看

這就像一封電子郵件,如果您在一組電子郵件中有未讀電子郵件,將會以粗體顯示。我正在做那樣的事情。

我有一個倉庫,所以我這樣做...

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 [email protected]>} 

我不想把這個企業,我的看法。

有沒有辦法在我的控制器上做到這一點?

我的問題清楚了嗎?對不起有關英文不好.Tk

回答

0

你打算調用這個存儲庫方法多少次(到目前爲止我已經計算了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<InteractionViewModel>替換視圖模型的IEnumerable<Interaction>屬性,並使用AutoMapper外部化模型和視圖模型之間的映射。

相關問題