2011-03-29 83 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外部化模型和视图模型之间的映射。

相关问题