رفع مشکل رندر شدن صفحه قبل از پایان OnGetAsync در دات نت کر

mohsen1 سال قبل
ارسال شده در
mohsen

مشکل: صفحه ما قبل از پایان متد OnGetAsync در دات نت رندر می شود. فرض کنید که در متد OnGetAsync قرار است از دیتابیس یک مقداری را بخوانیم و در صفحه نمایش دهیم. ولی با وجود اینکه در دیتابیس دیتای مورد نظر وجود دارد، درون صفحه چیزی نمایش داده نمی شود. بعد از بررسی متوجه می شویم که صفحه قبل از پایان متد OnGetAsync رندر میشود.

مشکل این است که برای دریافت دیتا از دیتابیس از await استفاده نکرده ایم.

      public async Task OnGetAsync()
{
  Products = GetProductsAsync(); // <- call async function without await
}
    

اما اگر از await استفاده کنیم و مقدار بازگشتی متد OnGetAsync از نوع Task نباشد باز هم همین مشکل رخ می دهد. یعنی در مثال زیر نیز ممکن است چیزی در صفحه نمایش داده نشود. 

      public async void OnGetAsync() // <- does not return Task
{
  Products = await GetProductsAsync(); 
}
    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!