【问题标题】:What are Invoke & InvokeAsync methods?什么是 Invoke 和 InvokeAsync 方法?
【发布时间】:2017-04-21 11:01:28
【问题描述】:

什么是调用方法?

下面是我的viewcomponent() 方法。

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

这是匿名函数吗?

这个函数叫什么名字?

我尝试将"Invoke"改成"func",但是没有语法错误而是出现运行时错误。

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

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

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

"component.InvokeAsynk" 进入你的组件类并找到 Invoke 方法,然后遵循这个方法

【问题讨论】:

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


    【解决方案1】:

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

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

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

    • 您不会收到编译器错误,但是
    • 会发生运行时错误。

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

    您可以为视图组件命名任何您喜欢的名称,但调用它的方法的名称必须称为Invoke 或InvokeAsync。

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

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

    【讨论】:

    • 先生,您的回答似乎很好。我也愿意你回答。我明白。但是我必须做些什么来更改名称
    • 先生,如果我有一些困惑,您还想分享您的 skyp ID 或其他来源与您联系。因为在发布问题之前,我尝试在 **stack overflow 聊天室 ** 上找到您,但没有成功
    • 我更新了我的答案来回答这个问题。问题应该通过 stackoverflow 而不是 Skype,以便 stackoverflow 社区从问题和答案中受益。
    • 更新了我的答案来回答这个问题。
    • 艾哈迈德,哪一部分还在混淆?我很乐意提供更多解释。这些事情有时很难理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2021-08-14
    • 2012-11-04
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    相关资源
    最近更新 更多