首页 > 解决方案 > 在 razor 视图中找不到“Invoke”或“InvokeAsync”方法错误

问题描述

在我的视图中使用视图组件时,我收到了这个没有意义的错误。当我打开一个使用视图组件的视图(为所述视图组件调用标签助手)时,我看到了一个错误,我无法在 Visual Studio 的错误列表部分中解决这个问题。

仅当打开 cshtml 文件时,错误才会显示在错误列表中。如果我关闭 cshtml 文件,错误就会消失。每个打开的 cshtml 文件都会重复该错误。

该错误永远不会阻止应用程序构建,它会按预期呈现视图组件..

这个错误只是在视觉上很烦人,可能会产生误导......有没有办法摆脱这个?我是否在做一些不正确的事情来显示此错误?这是 Visual Studio 错误吗?

编辑:我的应用程序有许多视图组件。我经常从视图组件视图中调用其他视图组件。这似乎是导致错误的原因,但我不明白为什么......即使许多视图组件都这样做..错误仅针对一个视图组件显示,但对于每个打开的cshtml文件都重复...如果我注释掉从视图组件视图中调用视图组件标记帮助程序的行,则错误现在转移到一些其他相同的视图组件仍然为每个视图重复.. 非常混乱!

任何帮助表示赞赏谢谢..

错误:


Error       Could not find an 'Invoke' or 'InvokeAsync' method for the view component 'AspNetCore.Views_Shared_Components_Some_SomeViewComponent'.  SomeWebProject  C:\Src\SomeWebProjectFolder\Views\Shared\Components\Some\SomeViewComponent.cshtml   1   

ViewComponent 实现类 -->

//Base View Component Class
public abstract class BaseViewComponent<TViewModel> : ViewComponent
    where TViewModel : IViewComponentViewModel
{
    public IViewComponentResult Invoke(TViewModel viewModel)
    {
        return View(viewModel.ViewName, viewModel);
    }
}

//Derived View Component Class
public class SomeViewComponent : BaseViewComponent<SomeViewComponentViewModel>
{ }

//View Component View Model Implementation for SomeViewComponent
public class SomeViewComponentViewModel : IViewComponentViewModel
{
    public string SomeProperty { get; set; }

    //Below properties are implementations of IViewComponentViewModel.. 
    //Shared/Components/Some/ folder structure to find the view.. 
    public string ViewComponentName => "Some";
    //view named "SomeViewComponent.cshtml"
    public string ViewName => nameof(SomeViewComponent);
}

SomeViewComponent.cshtml(调用嵌套视图组件)-->

@model SomeViewComponentViewModel
<span><vc:some-other view-model="Model.SomeProperty" /></span>

一些使用 SomeViewComponent 的视图 -->

@model SomeViewModel

<vc:some view-model="Model.SomeViewComponentViewModel" />

标签: c#asp.net-core-mvcasp.net-core-viewcomponentview-components

解决方案


推荐阅读