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

MudTable WASM页面加载时如何将URL参数设置为表格状态?

方案1:双向绑定同步状态(官方推荐)

无需直接操作MudTable实例,通过双向绑定将表格状态和本地变量关联,同步URL参数即可:

1. 表格声明绑定状态

<MudTable T="MyEntity" 
          ServerData="LoadServerData"
          @bind-CurrentPage="currentPage"
          @bind-RowsPerPage="rowsPerPage"
          @bind-SortLabel="sortLabel"
          @bind-SortDirection="sortDirection">
    <!-- 列定义、分页配置等原有内容 -->
</MudTable>

2. 定义绑定变量与URL参数接收

// 表格绑定的状态变量
private int currentPage;
private int rowsPerPage = 10;
private string sortLabel;
private SortDirection sortDirection;

// 自动接收URL查询参数
[Parameter, SupplyParameterFromQuery(Name = "PageNo")]
public int PageNo { get; set; } = 1;
[Parameter, SupplyParameterFromQuery(Name = "PageSize")]
public int PageSize { get; set; } = 10;
[Parameter, SupplyParameterFromQuery(Name = "SortLabel")]
public string SortLabel { get; set; } = "Id";
[Parameter, SupplyParameterFromQuery(Name = "SortDirection")]
public string SortDir { get; set; } = "asc";
[Parameter, SupplyParameterFromQuery(Name = "Filter")]
public string Filter { get; set; }

3. 初始化同步状态

protected override void OnParametersSet()
{
    // 注意:MudTable的页码从0开始,若URL中存储的是1起始页码需减1
    currentPage = PageNo - 1;
    rowsPerPage = PageSize;
    sortLabel = SortLabel;
    sortDirection = SortDir.Equals("asc", StringComparison.OrdinalIgnoreCase) 
        ? SortDirection.Ascending 
        : SortDirection.Descending;
}

// 原有ServerData加载逻辑无需修改
private async Task<TableData<MyEntity>> LoadServerData(TableState state)
{
    var data = await 你的接口请求逻辑(state.Page, state.PageSize, state.SortLabel, state.SortDirection, Filter);
    return new TableData<MyEntity> { Items = data.List, TotalItems = data.Total };
}

方案2:调用MudTable公开API修改状态

如果需要直接操作表格实例,调用官方提供的异步修改方法即可,不会触发访问警告:

// 页面加载完成后执行
// 同样注意页码从0开始
await table.SetCurrentPageAsync(PageNo - 1);
await table.SetRowsPerPageAsync(PageSize);
await table.SetSortAsync(SortLabel, 
    SortDir.Equals("asc") ? SortDirection.Ascending : SortDirection.Descending);
// 调用上述方法后会自动触发ServerData加载,无需手动调用ReloadServerData

原警告触发原因:高版本MudBlazor将CurrentPage、RowsPerPage等属性的setter改为内部访问,禁止外部直接修改避免内部状态冲突,上述两种方案均符合官方设计规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:06