什么是 Invoke 和 InvokeAsync 方法?

What are Invoke & InvokeAsync methods?

什么是调用方法?

下面是我的viewcomponent()方法。

public IViewComponentResult Invoke()
{
 ViewBag.SelectedCategory = RouteData?.Values["category"];
return 
View(repository.Products.Select(x=>x.Category).Distinct().OrderBy(x=>x));
}

这是匿名函数吗?

这个函数的名称是什么?

我尝试将 "Invoke" 更改为 "func" 但是没有语法错误但是 运行-时间错误发生。

是否可以在单个视图组件中使用多个名称为 "Invoke" 并接收不同参数的方法 class。

我知道视图组件用于为此呈现部分视图我们使用助手,它是这个

 @await Component.InvokeAsync("Here is the name of your view component")

"component.InvokeAsynk" 转到您的组件 class 并找到 Invoke 方法,然后遵循此方法

ViewComponent 上的 InvokeInvokeAsync 方法是定义视图组件逻辑的方法。这些不是匿名函数。它们是常规的 c# 方法,仅具有名称 InvokeInvokeAsync.

您不需要在视图组件中同时定义它们。 相反你只能定义一个方法。

假设您将其命名为 Invoke 然后将其重命名为 func 然后您更改了方法的名称:

  • 你不会得到编译器错误,但是
  • 将发生运行时错误。

这是因为调用您的视图组件的 Asp.Net 核心框架代码期望它具有 InvokeInvokeAsync 方法,而您的 ViewComponent 现在两者都没有.

您可以随意命名您的视图组件,但调用它的方法的名称必须称为 InvokeInvokeAsync

一个ViewComponent只能有一个InvokeInvokeAsync方法。 ViewComponent 不能同时拥有两者,也不能是其中任何一个的倍数(具有不同的参数)。尝试这样做会产生以下运行时错误:

View component 'ViewComponents.NameOfComponent' must have exactly one public method named 'InvokeAsync' or 'Invoke'.