blazor页面加载后如何执行代码

时间:2020-03-27 07:14:20

标签: c# blazor

所以我试图在页面加载后执行一个方法。在我看来,OnAfterRender()覆盖方法还为时过早。我要尝试的方法是在剃须刀页面的@code{}块中。

我基本上想在页面加载时执行getAvailablePrinters。

根据下面的要求输入我的代码:

@code {
    private List<string> Printers;

    private List<string> LayoutTypes;

    private void sendPrint()

    private async Task getAvailablePrinters()
    {
        //get layouts
        Layouts = new List<Layout>();
        AvailablePrintersRepository availablePrintersRepository = new AvailablePrintersRepository();
        try
        {
            Layouts = await availablePrintersRepository.getAvailablePrintersAsync();
        }
        catch (Exception e)
        {
            //show message
        }

        //sort printers & layouts
        Printers = new List<string>();
        LayoutTypes = new List<string>();

        foreach (Layout layout in Layouts)
        {
            foreach (string printer in layout.Printers)
            {
                if (!Printers.Contains(printer))
                {
                    Printers.Add(printer);
                }
            }

            if (!LayoutTypes.Contains(layout.Type))
            {
                LayoutTypes.Add(layout.Type);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

@AccessDenied我想向另一个API发送请求以取回我需要显示给用户的数据。我现在有一个按钮可以执行此操作,但是我想在页面加载后获取数据,因此用户不必每次都按下按钮

-

因为页面加载后该方法尚未完成,所以这就是为什么我要在页面加载后执行

因此,您认为OnAfterRenderAsync和OnAfterRender在管道中被调用太早了,因此不适合您想要执行以检索数据的Web Api调用,对吗?

您错了,我认为对于企业而言,它们为时已晚,您应该使用OnInitializedAsync生命周期方法执行HTTP请求。 请参阅VS模板,如何使用Web Api填充ForeCast对象 在FetchData页面中。

您应该在各种情况下尝试编写代码,以了解初始化过程的工作原理,并了解您的想法或看法是错误的。了解这一点:您应该在呈现页面之前而不是在呈现页面之后检索数据。 OnAfterRender(Async)可能用于执行代码,否则现在执行还为时过早。它最常用于初始化JS对象。

希望这对您有帮助...

相关问题