什么是 Invoke 和 InvokeAsync 方法?

Ahm*_*mad 0 c# asp.net-core asp.net-core-viewcomponent

什么是调用方法?

下面是我的viewcomponent()方法。

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

这是匿名函数吗?

这个函数的名字是什么?

我试图用“func”更改“Invoke”,但没有语法错误,但发生了运行时错误。

是否可以在单个视图组件类中具有多个具有“调用”名称并接收不同参数的方法。

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

 @await Component.InvokeAsync("Here is the name of your view component")
Run Code Online (Sandbox Code Playgroud)

"component.InvokeAsynk"去你的组件类,找到 Invoke 方法,然后按照这个方法

Ron*_*n C 6

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

您不需要在视图组件中同时定义它们,定义其中之一就足够了。如果你只有一个,假设Invoke你将它重命名为 ,func那么你已经改变了方法的名称,虽然你不会得到编译器错误,但是当你运行你的代码时会发生运行时错误,因为 Asp.调用您的视图组件的 Net Core 框架代码期望它具有InvokeorInvokeAsync方法,而您ViewComponent现在两者都没有。

您可以将您的视图组件命名为任何您喜欢的名称,但调用它的方法的名称必须是InvokeInvokeAsync

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

视图组件“ViewComponents.NameOfComponent”必须只有一个名为“InvokeAsync”或“Invoke”的公共方法。

  • 我更新了我的答案来回答这个问题。问题应该通过 stackoverflow 而不是 Skype,以便 stackoverflow 社区从问答中受益。 (3认同)