无法识别 ASP.NET Core ViewComponent 的 Invoke() 方法调用

nam*_*nam 3 c# visual-studio-2015 asp.net-core

在我使用 VS2015 的 ASP.NET Core RC2 应用程序中,我在 ViewComponent 类中有以下 Invoke() 方法,但智能感知无法识别 Invoke() 方法。该应用程序构建成功,但在运行时出现以下错误:

System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Html.IHtmlContent]
Run Code Online (Sandbox Code Playgroud)

ViewComponent 类中的 Invoke() 方法

public IViewComponentResult Invoke(string filter)
        {
            var res = (from p in ctx.Product.ToList()
                       where p.ProductName.StartsWith(filter)
                       select p).ToList();

            return View(res);
        }
Run Code Online (Sandbox Code Playgroud)

从生成上述错误的视图调用 Invoke() 方法

<div class="alert alert-success">@Component.Invoke("ProductList", "D")</div>
Run Code Online (Sandbox Code Playgroud)

小智 8

这是一个老问题,但我想为 ASP.NET Core 的 1.0 RTM 版本提供答案。

@await Component.InvokeAsync("ProductList", new { filter = "D" })
Run Code Online (Sandbox Code Playgroud)

Component.Invoke()已被删除。因此,即使视图组件中的方法仍然定义为Invoke()(而不是InvokeAsync()) ,这也是正确的方法——这取决于方法的作用。

作为替代方案,您还可以使用更强类型的版本...

@(await Component.InvokeAsync<ProductList>(new { filter = "D" }))
Run Code Online (Sandbox Code Playgroud)