【问题标题】:Pass parameter and model to component view in PagedListPager将参数和模型传递给 PagedListPager 中的组件视图
【发布时间】:2021-09-07 11:42:23
【问题描述】:

我正在准备在 asp.net core 中使用 PagedList

视图组件名称中的函数列表:AdvListViewComponent.cs

public async Task<IViewComponentResult> InvokeAsync(int page = 1)
    {

        var adv = _db.advertisements.OrderByDescending(i => i.AdvId); 
        return View(adv.ToList().ToPagedList(page , 6 ));
    }

在 asp.net mvc 中,我使用此代码转到下一页(我的列表功能是控制器中的索引)

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

如何使用 lambda 和 PagedListPager 传递参数 page 和模型来查看组件 InvokeAsync (AdvList) AdvListViewComponent.cs 转到下一页

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-core


    【解决方案1】:

    更好的方法是对视图使用复杂的模型。复杂模型将携带从动作到视图的所有必要日期。例如:

    查看模型:

    public class MyViewModel {
       public MyViewModel(){
          advList = new List<Adv>();
       }
    
       public int pageIndex {get; set;}
       public int pageSize {get; set;}
       public int TotalCount {get; set;}
       public string OrderBy {get; set;}
       public List<Adv> advList {get; set;}
    }
    

    行动:

    public async Task<IActionResult> InvokeAsync(MyViewModel model)
    {
        var adv = _db.advertisements
            .skip(model.pageIndex * model.pageSize)
            .Take(model.pageSize)
            .OrderByDescending(i => i.AdvId); 
        
        model.advList = adv.ToList().ToPagedList(model.pageIndex + 1 , model.pageSize)
        return View(model);
    }
    

    这允许您仅加载当前页面的数据,而不是所有数据。然后在视图中:

    @Html.PagedListPager(Model.advList, page => Url.Action("Index", 
        new { Model.pageIndex, sortOrder = Model.OrderBy }))
    

    现在,如果您单击寻呼机,那么在操作的参数中,pageIndexOrderBy 将从 UI 自动填充。

    这样您可以在视图和控制器之间发送-接收多个参数。

    【讨论】:

    • 感谢您的回复,这是非常好的分页解决方案。在我的问题中,我想将值传递给我的视图组件,而不是像这样的 url 操作 @Html.PagedListPager(Model, page => Component.InvokeAsync("AdvList", new { page })) 我的视图组件函数位于文件夹中ViewComponent->AdvListViewComponent 不在控制器中使用 url 操作..但是当我使用它时我得到错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多