什么是Invoke&& InvokeAsync方法?

时间:2017-04-21 11:01:29

标签: c# asp.net-core asp.net-core-viewcomponent

什么是Invoke方法?

下面是我的viewcomponent()方法。

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

这是匿名函数吗?

这个功能的名称是什么?

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

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

我知道视图组件用于渲染部分视图,我们使用的是这个

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

“component.InvokeAsynk”转到组件类并找到Invoke方法,然后按照此方法

1 个答案:

答案 0 :(得分:2)

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

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

您可以根据需要为视图组件命名,但调用它的方法名称必须调用InvokeInvokeAsync

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

  

查看组件'ViewComponents.NameOfComponent'必须只有一个名为'InvokeAsync'或'Invoke'的公共方法。