我的目标是记录何时以及谁在调用 GetAll() 函数,正如我在 MVC ActionFilter 中记得的那样,它就是这样工作的,但是当我尝试从 razor 实现类似的过滤器时,过滤器不起作用?有谁知道我哪里做错了?我指的是ASP.NET Core 中 Razor Pages 过滤器方法的文档
我已经创建了这样的 sample.razor 页面,它显示记录列表。
@page "/sample"
<BlazorAgGrid @ref="AgGrid" RowData="result.Items" TRow="SampleViewModel"
AutoGenerateColumns="false"
Debug="false" Options="AgGridOptions" Attributes="Attributes"
AutoSizeColumns="true">
<BlazorAgGridColumn HeaderName="Sample1" Field="Sample1"/>
<BlazorAgGridColumn HeaderName="Sample2" Field="Sample2"/>
<BlazorAgGridColumn HeaderName="Sample3" Field="Sample3"/>
</BlazorAgGrid>
@code
{
private BlazorAgGrid<SampleViewModel> AgGrid;
public Dictionary<string, object> Attributes { get; set; } = new Dictionary<string, object>()
{
{ "style", "height: 500px" },
{ "class", "ag-theme-balham" }
};
private BlazorAgGridOptions AgGridOptions = new()
{
RowSelection = RowSelection.Single,
SuppressRowDeselection = true,
EnablePagination = false,
EnablePaginationAutoPageSize = false
};
private PagedList<SampleViewModel> result = new();
result = await SampleService.GetAll();
}
这是 GetAll() 函数
[SampleActionFilter]
public async Task<PagedList<SampleViewModel>> GetAll()
{
return await _httpClient.GetFromJsonAsync<PagedList<SampleViewModel>>
($"sample/list");
}
这是我试图制作的 actionFilter
using Microsoft.AspNetCore.Mvc.Filters;
using System.Threading.Tasks;
namespace Pages.Sample
{
public class SampleActionFilter : ResultFilterAttribute
{
public SampleActionFilter()
{
}
public override void OnResultExecuted(ResultExecutedContext context)
{
base.OnResultExecuted(context);
}
public override void OnResultExecuting(ResultExecutingContext context)
{
base.OnResultExecuting(context);
}
public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
{
return base.OnResultExecutionAsync(context, next);
}
}
}