• 1399/08/26

مشکل در استفاده از await :

   با سلام

استاد چرا به محض اینکه دستور await 

                @await Component.InvokeAsync("ProductGroupsComponent")

اضاقه میکنم دیگه پیج رو نمیاره و میگه این کامپوننت ProductGroupsComponent  رو نتونستم پیدا کنم؟

و خطا رو ارحاع به همون خط کد میده 

در حالیکه هست

سرچ که کردم یه سری کدها رو کفته اضافه کن 

گفتم از شما بپرسم اول 

 با این خطا توی برنامه:

 

 wait'%20operator%20to%20await%20non-blocking%20API%20calls,%20or%20'await%/Volumes/E/MyEshop/My This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread. (CS1998) (MyEshop).Run(...)'%20to%20do%20CPU-bound%20work%20on%20a%20background%20thread.%20(CS1998)%20(MyEshop)

خطای تمایش:

An unhandled exception occurred while processing the request.
InvalidOperationException: Could not find an 'Invoke' or 'InvokeAsync' method for the view component 'MyEshop.Components.ProductGroupsComponent'.
Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentDescriptorProvider.FindMethod(Type componentType)

Stack Query Cookies Headers Routing
InvalidOperationException: Could not find an 'Invoke' or 'InvokeAsync' method for the view component 'MyEshop.Components.ProductGroupsComponent'.
Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentDescriptorProvider.FindMethod(Type componentType)
Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentDescriptorProvider.CreateDescriptor(TypeInfo typeInfo)
System.Linq.Enumerable+SelectListIterator<TSource, TResult>.ToArray()
System.Linq.Enumerable.ToArray<TSource>(IEnumerable<TSource> source)
Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentDescriptorCollectionProvider.GetViewComponents()
Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentDescriptorCollectionProvider.get_ViewComponents()
Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentSelector.SelectComponent(string componentName)
Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentHelper.InvokeAsync(string name, object arguments)
Microsoft.AspNetCore.Mvc.Rendering.ViewComponentHelperExtensions.InvokeAsync(IViewComponentHelper helper, string name)
AspNetCore.Views_Shared__Layout.<ExecuteAsync>b__25_1() in _Layout.cshtml
+
                @await Component.InvokeAsync("ProductGroupsComponent")
  • 1399/08/26
  • ساعت 14:50

سلام 

باید متذد async باشه 

سرچ کنید asyn in dotnet


  • 1399/08/26
  • ساعت 14:53

بله توی داکیومنت اصلی هم دیدم گفته

async   استفاده کردی بعد برای await 

  با نام کامپوننت بیار 

دقیقا همین کاری که شما گفتید 

اما اینکارو میکنم میگه جرا این کامپوننت رو نتونتم پیدا کنم!!!

 @await Component.InvokeAsync("Name of view component", {Anonymous Type Containing Parameters})

  • 1399/08/26
  • ساعت 14:56

متن خطا رو سرچ کنید 

تاحالا چنین مشکلی نداشتم 


  • 1399/08/26
  • ساعت 14:57

من همیشه بعد از کلی سرچ  کردن اکر به جواب نرسم 

سوالم رو اینجا مطرح میکنم

ولی چشم باز سرچ میکنم


  • 1399/08/26
  • ساعت 14:58

نحوه نشتن نام رو رو چک کنید شاید اشتباهی تایپی داره یا شاید public نیست 

 


  • 1399/08/26
  • ساعت 14:59

کد کامپوننت رو قرار دهید 


  • 1399/08/26
  • ساعت 15:01

همیشه اولین کار نام رو دبل چک میکنم

حتی بعد با کد شما چک میکنم

بعد سرچ فراوان در گوگل :دی

جواب نرسم اینجا مطرح میکنم :)

  public class ProductGroupsComponent : ViewComponent

    {
        private MyEshopContext _context;


        public ProductGroupsComponent(MyEshopContext context)
        {
            _context = context;
        }

        public async Task<IViewComponentResult> InVokeAsync()




        {
           
            return View(_context.Categories);


        }
                @await Component.InvokeAsync("ProductGroupsComponent")

  • 1399/08/26
  • ساعت 15:03

InVokeAsync ؟؟؟

چرا V بزرگه ؟


  • 1399/08/26
  • ساعت 15:05

زبان سی شارپ case sensitive هست دوست من و به حروف کوچک و بزرگ حساسه 

امیدوارم از این باشه 


  • 1399/08/26
  • ساعت 15:29

نبود :(

 

موقع بیلد warning میده:

  This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work  . (CS1998)

 

 


  • 1399/08/26
  • ساعت 15:52

استاد درست شد 

گویا اشکال از همون  v بزرگ بود !!!

خطا داد دفعه اول 

که منو بی دقتی کردم همون خطایی بود که مال شما هم داد توی دیفالت میکرده 

 

بعد مسیر رو دادم توی   return view.  

درست شد. :)

 


  • 1399/08/28
  • ساعت 20:22

استاد فقط من یه چیزی رو متوجه نشدم 

میدونم توی سی شارپ به حروف کوچیک بزرگ حساسه 

 

ولی الان مگه. InvokeAsync.  اسم این تابع نیست؟ خوب این اسم رو دادیم نمیشه ؟

 

یا این جز فرمت دستور  await  هست و کلمه رزرو شده به حساب می اد؟

                @await Component.InvokeAsync("ProductGroupsComponent")

سوال دو:

 

توی قسمتی که   dropDown  اضافه کردید برای اوردن اسم گروهها با استفاده از  partial:

 

توی اون قسمت که میخواهیم اسم رو بخونه از db:

 

   <a class="dropdown-item" href="/Group/@item.Id/@item.Name">

 

 اینجاشو متوجه نشدم چرا از /group?

 


logo-enamadlogo-samandehi