0

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

@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 个数据,每个数据两次!

4

2 回答 2

0

你不需要foreach通过模型。GetHtml()会为你做一切。

当您将您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>
}
于 2013-02-10T22:47:47.867 回答
0

我不是 100% 确定,因为我不经常使用 WebGrid,但是你确定你需要它@foreach吗?不会@grid.GetHtml()返回所有记录吗?

于 2013-02-10T22:51:06.037 回答