2013-02-10 73 views
0

为什么这个webgrid迭代网格中的每一行?Asp.Net MVC3网格

@model IEnumerable<Blog.Domain.Model.BlogPost> 
@{ 
    ViewBag.Title = "Posts"; 
    Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml"; 
} 


@Html.ActionLink("Add Post", "Add", "Blog") 

@{ 
    var grid = new WebGrid(Model); 
} 
@foreach (var items in Model) 
{ 
    <div id="grid"> 
     @grid.GetHtml(columns: new[] {grid.Column("Title",header:""), 
     grid.Column("",header:"",format:(item)=>Html.ActionLink("More Details","Details","Blog",new{postId=items.Id},null)), 
     grid.Column("",header:"",format:(item)=>Html.ActionLink("Delete","Delete","Blog",new{postId=items.Id},null)), 
     grid.Column("",header:"",format:(item)=>Html.ActionLink("Edit","Edit","Blog",new {postId=items.Id},null)), }) 

    </div> 
} 

我的意思是:例如对于两个数据它呈现4个数据,每个数据两次!

回答

0

您不需要通过模型foreachGetHtml()将为您做所有事情。

当您将Model传递给WebGrid()构造函数时,网格现在知道在调用GetHtml()时需要渲染哪些数据,因此不需要执行其他任何操作。

这应做到:

@{ 
    var grid = new WebGrid(Model); 

    <div id="grid"> 
     @grid.GetHtml(columns: new[] {grid.Column("Title",header:""), 
     grid.Column("",header:"",format:(item)=>Html.ActionLink("More Details","Details","Blog",new{postId=item.Id},null)), 
     grid.Column("",header:"",format:(item)=>Html.ActionLink("Delete","Delete","Blog",new{postId=item.Id},null)), 
     grid.Column("",header:"",format:(item)=>Html.ActionLink("Edit","Edit","Blog",new {postId=item.Id},null)), }) 
    </div> 
} 
+0

感谢您的回答,那么您写在上面的代码中的'项目'是什么?我必须使用foreach,因为我得到了IEnumerable绑定模型,并且还需要将Id模型化为Crud操作,如代码中所示,详细信息,删除和编辑 – 2013-02-10 22:59:07

+0

@EricNielsen只需使用'item'。 – DaveShaw 2013-02-10 23:00:36

+0

谢谢,我明白了。 – 2013-02-10 23:08:00

0

我不是100%肯定,因为我不工作的WebGrid不多,但是你确定你需要的@foreach@grid.GetHtml()不会返回所有记录吗?