ASP.NET Core MVC ViewComponent报错:找不到Invoke或InvokeAsync方法
问题根因
PieViewComponent类的约定入口方法存在拼写错误:你将框架要求的InvokeAsync错写为InvokeAsyc,缺失了字母n,导致ASP.NET Core运行时无法识别到符合规范的ViewComponent执行入口,因此抛出对应异常。
解决方案
直接修正方法名拼写即可,修改后的PieViewComponent代码如下:
public class PieViewComponent : ViewComponent { IPieRepository PieDB; public PieViewComponent(IPieRepository PieRepo) { PieDB = PieRepo; } // 修正拼写错误:将InvokeAsyc改为InvokeAsync public async Task<IViewComponentResult> InvokeAsync() { List<Pie> items = await PieDB.GetCheapPiesAsync(); PieListViewModel pvlm = new PieListViewModel(); pvlm.Pies = items; pvlm.CurrentCategory = "Cheap Pies"; return View("Pie", pvlm); } }
可选补充修正(避免后续显示问题)
你当前的组件视图代码中输出Pie名称时缺少Razor标记@,运行后会直接显示文本p.Name而非对应变量值,可同步修正:
@model PieListViewModel <ul class="list-group"> @foreach (Pie p in Model.Pies) { <li class="list-group-item">@p.Name</li> } </ul>
内容的提问来源于stack exchange,提问作者darlink
相关产品推荐
相关产品推荐

