我可以使用IEnumerable<>在视图内?

时间:2013-03-27 12:11:02

标签: c# asp.net-mvc asp.net-mvc-3 razor

在_Layout.cshtml中

    @model DynaPortalMVC.Models.Page
@using System.Linq
<ul>
     @IEnumerable<model.Page> pages = model.Where(x=>x.CompanyID == 1);
     @foreach (var item in pages)
     {
       <li>item.Title</li>
     }
 </ul>

在视图中iam尝试过滤名为“page”的模型对象并获取id为1的页面列表。我需要遍历此页面以显示菜单。

控制器内的代码

public ActionResult Menu(string PageName)
    {
        //
        return View(PageName, db.Pages);
    } 

请告诉我,如何将此模型对象过滤到列表中?我在使用IEnumerable时遇到错误。

解决

我在视图页面中将模型对象更改为IEnumerable。

@model IEnumerable<DynaPortalMVC.Models.Page>

3 个答案:

答案 0 :(得分:2)

您可以跳过将查询结果分配到IEnumerable变量,除非您将其用于页面上的其他位置。所以你可以这样做:

@model DynaPortalMVC.Models.Page
@using System.Linq
<ul>
     @foreach (var item in model.Where(x=>x.CompanyID == 1))
     {
       <li>@item.Title</li>
     }
 </ul>

答案 1 :(得分:1)

你需要

@ {IEnumerable<model.Page> pages = Model.Where(x=>x.CompanyID == 1);}

答案 2 :(得分:0)

@model IEnumerable<DynaPortalMVC.Models.Page>
@{
    ViewBag.Title = "Page";

}