Sim*_*mon 5 c# asp.net-mvc razor asp.net-core-mvc asp.net-core
我目前正在为 ASP.NET Core MVC 编写自己的分页列表。
我在创建以下内容时遇到了困难:
我想创建一个 UrlHelper 扩展方法: Url.PageLink(int page, int pageSize)
在该扩展方法中,我想返回一个链接,该链接重用控制器、操作、查询字符串的所有当前值,此外它还应该添加/更新查询字符串中的页面、pageSize 值。
问题:从哪里获取 UrlHelper 对象中的当前控制器和操作?重建查询字符串的最佳方法是什么?我可以在这里看到它 url.ActionContext.HttpContext.Request.QueryString...但是我真的需要手动重建它吗?或者是否存在类似 AddQueryStringValue(int key, object value) 的东西?
非常感谢!西蒙
现在已经这样做了:
public static class UrlHelperExtensions
{
public static string Page(this IUrlHelper url, int page, int pageSize)
{
//Reuse existing route values
RouteValueDictionary resultRouteValues = new RouteValueDictionary(url.ActionContext.RouteData.Values);
//Add existing values from query string
foreach (var queryValue in url.ActionContext.HttpContext.Request.Query)
{
if(resultRouteValues.ContainsKey(queryValue.Key))
continue;
resultRouteValues.Add(queryValue.Key, queryValue.Value);
}
//Set or add values for PagedList input model
resultRouteValues[nameof(PagedListInputModel.Page)] = page;
resultRouteValues[nameof(PagedListInputModel.PageSize)] = pageSize;
return url.RouteUrl(resultRouteValues);
}
}
Run Code Online (Sandbox Code Playgroud)
并为 pagedlist 值创建了一个单独的输入模型“PagedListInputModel”...这样我可以确保我可以在所有地方重用它,而不必确保 page 和 pageSize 属性包含在所有需要的视图模型中正确的名字。
欢迎任何反馈。
| 归档时间: |
|
| 查看次数: |
3822 次 |
| 最近记录: |