C#PagedList MVC在分页中添加#anchor

时间:2015-03-05 14:39:27

标签: c# asp.net-mvc pagedlist

我想知道我是否可以在之后添加PagedList和#anchor?Page = 1

示例:http://localhost:10220/Products/MyUrl/Sku?Page=1#Products

我拥有它:

  @Html.PagedListPager((IPagedList)ViewBag.Products, page => Url.Action("Index", new { page }))

为什么我在我的产品之前有一些内容,而且我不希望我的客户在进行分页时一直翻页

obs:或者我可以让我的PagedList不用ajax刷新页面吗?有人有一个例子吗?

2 个答案:

答案 0 :(得分:1)

怎么样:

Url.Action("Index", new { page }) + "#Products"

没有办法用路由助手添加片段(你称之为“锚点”),因为片段不是路由的一部分;他们只适用于客户端。无论如何,lambda可以接受任何有效的表达式,而不仅仅是单方法调用,而Url.Action只返回一个字符串。因此,您可以将片段添加到字符串的末尾并将其称为一天。

答案 1 :(得分:1)

在我看来,它始终使用ajax的最佳方式!性能改进

您的控制器代码:

   public class MyCutomModel
{

  public int Id { get; set; }
  public string Name { get; set; }
}
public class HomeController : Controller

  //
  // GET: /Home/
  public ActionResult Index(int page = 1)
  {
     List<MyCutomModel> model = new List<MyCutomModel>();

     for (int i = 0; i < 10; i++)
     {
        model.Add(new MyCutomModel { Id = i, Name = "Name " + i.ToString() });
     }

     if (Request.IsAjaxRequest())
     {
        return PartialView("_Index", model.ToPagedList(page, 4));
     }

     return View(model.ToPagedList(page, 4));
  }
}

您的索引视图:

@model PagedList<MVCApp.Controllers.MyCutomModel>
@{
   ViewBag.Title = "Index";
}
@DateTime.Now

@Html.Partial("_Index", Model)

您的索引部分视图(&#34; _Index.cshtml&#34;):

@model PagedList<MVCApp.Controllers.MyCutomModel>
<div id="replaceDiv">
   <table class="table">
      <tbody>
         @foreach (var item in Model)
         {
           <tr>
               <td>@Html.DisplayFor(modelItem => item.Name)</td>
            </tr>
         }
      </tbody>
   </table>
   @Html.PagedListPager(Model, page => Url.Action("Index", new { page,   sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "replaceDiv" }))
</div>

注意PagedListPager的结尾,这是秘密

PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "replaceDiv" }))