私は Web サイトで作業していて、リンクに問題があります。
My Web-Site: My Web-Site (2 番目と 3 番目のページがありますが、同じです)
本のウェブサイト: 本のウェブサイト
問題: 他のページにつながるリンクを置かないでください。
私のコード:
コントローラ:
public class ProductController : Controller
{
public int PageSize = 4;
private IProductRepository repository;
public ProductController(IProductRepository productRepository)
{
repository = productRepository;
}
public ViewResult List(int page = 1)
{
ProductsListViewModel viewModel = new ProductsListViewModel{
Products=repository.Products
.OrderBy(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo
{
CurentPage = page,
ItemsPerPage = PageSize,
TotalItem = repository.Products.Count()
}
};
return View(viewModel);
}
Htmlヘルパー:
public static class PagingHelpers
{
public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int,string> pageUrl)
{
StringBuilder result = new StringBuilder();
for (int i = 1; i <= pagingInfo.TotalPages; i++)
{
TagBuilder tag = new TagBuilder("a");
tag.MergeAttribute("href", pageUrl(i));
tag.InnerHtml = i.ToString();
if (i == pagingInfo.CurentPage)
{
tag.AddCssClass("selected");
result.Append(tag.ToString());
}
}
return MvcHtmlString.Create(result.ToString());
}
}
モデル:
public class PagingInfo
{
public int TotalItem { get; set; }
public int ItemsPerPage { get; set; }
public int CurentPage { get; set; }
public int TotalPages {
get { return (int)Math.Ceiling((decimal)TotalItem / ItemsPerPage); }
}
}
と
public class ProductsListViewModel
{
public IEnumerable<Product> Products { get; set; }
public PagingInfo PagingInfo { get; set; }
}
意見:
@model SportsStore.WebUI.Models.ProductsListViewModel
@foreach(var a in Model.Products)
{
<div >
<h4>@a.Name</h4>
<h4>@a.Description</h4>
<h4>@a.Price.ToString("c")</h4>
</div>
}
<div class="pager">
@Html.PageLinks(Model.PagingInfo,x=>Url.Action("List", new {page=x}))
</div>