0

私は 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>
4

1 に答える 1

0

UrlHelper.GenerateUrlを見てみましょう ASP.NET MVC の UrlHelper.GenerateUrl を使用して、URL を含む文字列を返すことができます。

于 2013-10-14T09:33:30.987 に答える