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

ASP.NET Core 2.0/Razor Pages:如何持久化NonFactors MVC6.Grid请求间数据

解决MVC6.Grid排序/筛选时的POST数据持久化与本地处理问题

先直接回应你的核心疑问,再分场景给出具体解决方案:

1. 关于POST时是否需要重新填充Parts

是的,因为HTTP是无状态协议,每次排序/筛选触发的POST请求都是全新请求,之前请求中填充的Parts属性不会自动保留。所以你必须在POST对应的Action中重新生成Parts数据。

不过可以优化这个过程,避免重复编写搜索逻辑:

  • 把用户的搜索参数(比如关键词、筛选条件)存储在TempData或Session中,POST时直接取出这些参数重新执行搜索,获取Parts。
  • 或者将搜索参数和Grid数据封装到同一个ViewModel里,这样POST时Action可以直接接收参数并重新查询数据。

示例代码参考:

// 包含搜索参数和Grid数据的ViewModel
public class PartsViewModel
{
    [BindProperty]
    public string SearchKeyword { get; set; }
    [BindProperty]
    public List<PartModel> Parts { get; set; } = new List<PartModel>();
}

// 处理GET和POST请求的Action
[HttpGet]
public IActionResult Parts()
{
    return View(new PartsViewModel());
}

[HttpPost]
public IActionResult Parts(PartsViewModel model)
{
    // 复用搜索参数重新获取数据
    model.Parts = _partRepository.SearchParts(model.SearchKeyword);
    return View(model);
}

2. 如何绑定到POST事件

其实MVC6.Grid默认会把排序/筛选的POST请求发送到当前页面对应的Action,你不需要额外绑定事件,只要确保你的Action支持POST请求即可(添加[HttpPost]特性,或者同时支持GET和POST)。

如果需要自定义请求目标,可以通过Grid的Action()方法指定:

@(Html.Grid(Model.Parts)
    // ... 其他列配置
    .Action("YourActionName", "YourControllerName")
)

3. 实现本地排序/筛选(无需POST)

这应该是你最理想的方案——启用MVC6.Grid的客户端模式,所有排序、筛选、分页操作都会在浏览器本地完成,不会发起任何POST请求。

只需要在Grid配置中添加.ClientSide()方法即可:

@(Html.Grid(Model.Parts)
    .Build(columns => {
        columns.Add(model => model.PartNumber).Titled("Part Number");
        columns.Add(model => model.Description).Titled("Description");
        columns.Add(model => model.ProductCode).Titled("Product Code");
        columns.Add(model => model.Warehouse).Titled("Warehouse");
    })
    .Filterable()
    .Sortable()
    .Pageable(pager => { pager.RowsPerPage = 20; })
    .ClientSide() // 启用客户端模式
)

注意事项:

  • 客户端模式需要一次性加载所有Parts数据到浏览器,所以如果数据量很大(比如超过1000条),可能会影响页面加载速度和性能,这种情况下还是推荐服务器端处理(即重新填充Parts的方式)。
  • 确保首次加载页面时,Parts已经包含了所有需要展示的数据,因为客户端模式下不会再向服务器请求数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:56:42