2013-02-10 4 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

foreach 모델을 통해 필요하지 않습니다. GetHtml()은 모든 것을 처리해 줄 것입니다.

ModelWebGrid() 생성자로 전달하면 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

답장을 보내 주셔서 감사합니다. 그럼 위의 코드에서 'items'는 무엇입니까? 내가 IEnumerable 바인딩 된 모델을 얻을뿐만 아니라, 코드, 세부 사항, 삭제 및 편집에서 볼 수 있듯이 ID를 Crud 연산으로 모델링해야하므로 foreach를 사용해야한다. –

+0

@EricNielsen은'item'을 사용한다. – DaveShaw

+0

덕분에, 나는 그것을 얻었다. –

0

나는 많은 WebGrid 작동하지 않기 때문에 나는 100 % 확실하지 않다,하지만 당신은 당신이 @foreach 것을 필요 확신? @grid.GetHtml() 모든 기록을 반환하지 않겠습니까?