1

我的目标是记录何时以及谁在调用 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);
        }
    }
}
4

0 回答 0