我想知道我是否可以在之后添加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刷新页面吗?有人有一个例子吗?
答案 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" }))