0

ページに pagedlist があり、5 ページで www.example.com/viewing?1 ... 2 ...3 から 5 までの形式で結果を表示できます。現在のページを確認しています。する上で

@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 })  
}
4

2 に答える 2

1

5 ページに制限しているのに、現在のページ番号に基づいて大量の if/else ステートメントを使用してフッターなどを動的に生成する必要があるのはなぜですか? 特に将来記事にページを追加することにした場合は特に、これがすぐに手に負えなくなる可能性があるという点であなたは正しい.

record count や 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
    } 
}}
于 2013-02-09T06:12:47.243 に答える
0

私の PagedList nuget パッケージの使用を検討してください。

https://github.com/troygoode/pagedlist

于 2013-02-09T16:21:27.330 に答える