所以我试图在页面加载后执行一个方法。在我看来,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);
}
}
}
}
答案 0 :(得分:2)
@AccessDenied我想向另一个API发送请求以取回我需要显示给用户的数据。我现在有一个按钮可以执行此操作,但是我想在页面加载后获取数据,因此用户不必每次都按下按钮
-
因为页面加载后该方法尚未完成,所以这就是为什么我要在页面加载后执行
因此,您认为OnAfterRenderAsync和OnAfterRender在管道中被调用太早了,因此不适合您想要执行以检索数据的Web Api调用,对吗?
您错了,我认为对于企业而言,它们为时已晚,您应该使用OnInitializedAsync生命周期方法执行HTTP请求。 请参阅VS模板,如何使用Web Api填充ForeCast对象 在FetchData页面中。
您应该在各种情况下尝试编写代码,以了解初始化过程的工作原理,并了解您的想法或看法是错误的。了解这一点:您应该在呈现页面之前而不是在呈现页面之后检索数据。 OnAfterRender(Async)可能用于执行代码,否则现在执行还为时过早。它最常用于初始化JS对象。
希望这对您有帮助...