2013-02-09 57 views
0

我在我的页面上有pagedlist,它允许5页以www.example.com/viewing?1 ... 2 ... 3的格式查看结果结果5,我检查我是哪个网页上做PagedList非常冗余和重复代码

@if (Model.article.PageNumber == 1) 
{ 
} 

然后

@if (Model.article.PageNumber == 2) 
{ 
} 

一路5 ..有一个更好的办法在这里做的是这样的代码..

// look at Model.article.PageNumber as you can see I use that to get pages 1-5 and 
// it keeps the tabs in order if page=2 then the first element is page2 -1 and the like 
// how can i reduce this code so i can add the page numbers correctly without repeating 5 times 

@if (Model.article.PageNumber == 1) 
{ 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber).ToString()), "index", new { page = Model.article.PageNumber }) @Html.Raw(" ");   
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 1).ToString()), "index", new { page = Model.article.PageNumber + 1 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 2).ToString()), "index", new { page = Model.article.PageNumber + 2 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 3).ToString()), "index", new { page = Model.article.PageNumber + 3 })@Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 4).ToString()), "index", new { page = Model.article.PageNumber + 4 }) 
} 

@if (Model.article.PageNumber == 2) 
{ 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 1).ToString()), "index", new { page = Model.article.PageNumber - 1 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber).ToString()), "index", new { page = Model.article.PageNumber }) @Html.Raw(" ");  
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 1).ToString()), "index", new { page = Model.article.PageNumber + 1 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 2).ToString()), "index", new { page = Model.article.PageNumber + 2 })@Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 3).ToString()), "index", new { page = Model.article.PageNumber + 3 }) 
    @Html.Raw(" "); 
} 

@if (Model.article.PageNumber == 3) 
{ 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 2).ToString()), "index", new { page = Model.article.PageNumber - 2 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 1).ToString()), "index", new { page = Model.article.PageNumber - 1 })@Html.Raw(" ");  
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber).ToString()), "index", new { page = Model.article.PageNumber })@Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 1).ToString()), "index", new { page = Model.article.PageNumber + 1 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 2).ToString()), "index", new { page = Model.article.PageNumber + 2 }) 
} 

@if (Model.article.PageNumber == 4) 
{ 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 3).ToString()), "index", new { page = Model.article.PageNumber - 3 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 2).ToString()), "index", new { page = Model.article.PageNumber - 2 }) @Html.Raw(" ");  
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 1).ToString()), "index", new { page = Model.article.PageNumber - 1 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber).ToString()), "index", new { page = Model.article.PageNumber }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber + 1).ToString()), "index", new { page = Model.article.PageNumber + 1 }) @Html.Raw(" "); 
} 

@if (Model.article.PageNumber == 5) 
{ 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 4).ToString()), "index", new { page = Model.article.PageNumber - 4 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 3).ToString()), "index", new { page = Model.article.PageNumber - 3 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 2).ToString()), "index", new { page = Model.article.PageNumber - 2 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber - 1).ToString()), "index", new { page = Model.article.PageNumber - 1 }) @Html.Raw(" "); 
    @Html.ActionLink(String.Format("{0}", (Model.article.PageNumber).ToString()), "index", new { page = Model.article.PageNumber }) 
} 

回答

1

由于您将自己限制为5页,为什么页脚或任何需要基于当前页码使用大的if/else语句动态生成?你是对的,因为这可能会很快变得不稳定,特别是如果你决定在将来添加更多页面到文章。

看来你可以通过一个单一的财产,如记录数或NUMPAGES并执行以下操作:

@{for(var pageNum = 1; pageNum <= Model.article.numPages, pageNum++){ 
    @Html.ActionLink(string.Format("{0} ", pageNum), "index", new { page = pageNum })     
}} 

这将减少我在上面看到的嵌套,消除了对Html.Raw的需要结束并且与页面不可知(意味着它与你所在的页面无关)。您还可以将当前请求的页面包含在您的视图模型中,这样您就无法将该页面设为链接。例如:

@{for(var pageNum = 1; pageNum <= Model.article.numPages, pageNum++){ 
    if(pageNum <> Model.article.PageNumber){ 
     @Html.ActionLink(string.Format("{0} ", pageNum), "index", new { page = pageNum }) 
    }else{ 
     @Model.article.PageNumber 
    } 
}}