从 ViewComponent 继承而不调用父 ViewComponent

Inherit from ViewComponent without invoke the parent ViewComponent

我正在使用 ASP .Net Core ViewComponent 并且我有一个在组件之间共享的通用函数所以我决定制作一个通用的 ViewComponent 并且所有其他组件都必须继承它

我先试了这个

    public class CommonViewComponent: ViewComponent
    {
       //some methods
    }

子组件是这样的

 public class SubDealsViewComponent: CommonViewComponent
 {
      public async Task<IViewComponentResult> InvokeAsync()
      {
          //calling some methods from the parent
      }
 }

在这种情况下,我遇到了父组件必须包含Invoke()InvokeAsync()

的错误

当我为父组件创建 Invoke() 方法时,我也遇到了这个错误

InvalidOperationException: View component 'Components.SubDealsViewComponent' must have exactly one public method named 'InvokeAsync' or 'Invoke'.

为了重用成员,您的父视图组件 class 可以声明为 abstract 这样它就不需要 InvokeInvokeAsync 方法定义,像这样:

public abstract class CommonViewComponent: ViewComponent
{
   //some methods
}

这是有道理的,否则它可能是一个有效的可用视图组件,但这不是您的目的(直接使用它)。