You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#分页功能失效:参照微软文档适配视图时遇问题求助

C# MVC分页功能无法正常工作的排查与修复建议

我看了你贴的控制器代码片段,发现几个可能导致分页失效的关键点,咱们一步步来排查修复:

1. 变量名不匹配,分页重置逻辑失效

你代码里的参数是searchmovie,但后面判断分页重置的逻辑用的是search != null,这俩变量名完全不对应,导致搜索时根本不会触发分页回到第一页的逻辑。得把变量名统一:

if (searchmovie != null) {
    page = 1;
} else {
    searchmovie = currentFilter;
}

2. 未对数据源做分页截断处理

你贴的代码里IEnumerable&...应该是截断了,正常来说,获取到符合搜索条件的全量数据后,必须用Skip和Take来截取当前页的数据,不然每次都会返回所有数据,分页自然不生效。示例代码如下:

// 假设你从数据库获取符合搜索条件的电影列表
var allMovies = _context.Movies.Where(m => 
    option == "Title" ? m.Title.Contains(searchmovie) : m.Genre.Contains(searchmovie)
);

int pageNumber = page ?? 1; // 若page参数为空,默认显示第一页
int pageSize = 4;

// 分页截取数据
var paginatedMovies = allMovies.Skip((pageNumber - 1) * pageSize).Take(pageSize);

// 给ViewModel赋值,别忘了传递分页相关的元数据
SearchViewModel data = new SearchViewModel();
data.Movies = paginatedMovies;
data.PageNumber = pageNumber;
data.TotalPages = (int)Math.Ceiling((double)allMovies.Count() / pageSize);
data.CurrentFilter = searchmovie;
data.Option = option;

3. 视图分页链接丢失关键参数

视图里生成分页按钮时,必须把option、searchmovie这些搜索参数一起传递,不然点击分页按钮时,搜索条件会丢失,导致分页展示的是全部数据而非搜索结果。用ASP.NET Core TagHelper的示例代码:

<nav aria-label="Movie pagination">
    <ul class="pagination">
        @for (int i = 1; i <= Model.TotalPages; i++)
        {
            <li class="page-item @(i == Model.PageNumber ? "active" : "")">
                <a class="page-link" 
                   asp-action="Search"
                   asp-route-option="@Model.Option"
                   asp-route-searchmovie="@Model.CurrentFilter"
                   asp-route-page="@i">
                    @i
                </a>
            </li>
        }
    </ul>
</nav>

4. 确保ViewModel包含分页所需字段

你的SearchViewModel需要承载分页相关的元数据,不然视图没法获取分页信息来生成正确的分页链接:

public class SearchViewModel
{
    // 分页后的电影列表
    public IEnumerable<Movie> Movies { get; set; }
    // 当前页码
    public int PageNumber { get; set; }
    // 总页数
    public int TotalPages { get; set; }
    // 当前搜索关键词,用于分页时保留搜索条件
    public string CurrentFilter { get; set; }
    // 当前搜索选项(比如按标题/类型搜索)
    public string Option { get; set; }
}

按照上面的步骤调整后,应该就能解决分页失效的问题了,如果还有问题,可以补充完整的控制器代码和视图代码,咱们再进一步排查。

内容的提问来源于stack exchange,提问作者Pavel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:11:49