相关疑难解决方法(0)

ASP.NET MVC 6:在单独的程序集中查看组件

我想在MVC 6 Web启动项目的单独程序集中定义视图组件(ASP.NET MVC 6中的新组件),以便我可以在多个Web项目中重用它们.示例解决方案可能如下所示:

  • BookStore.Components (容纳常见视图组件)
  • BookStore.Web1 (引用BookStore.Components)
  • BookStore.Web2 (引用BookStore.Components)

我创建了一个新的类库(Package)并在其中创建了一个视图组件.我还在嵌套文件夹约定之后创建了视图.我的BookStore.Components项目看起来像这样:

在此输入图像描述

当我尝试从我的Web项目调用此视图组件时:

@Component.Invoke("BookOfTheMonth")
Run Code Online (Sandbox Code Playgroud)

...我的内容正文出现了500错误.似乎发现了ViewComponent类,但组件的剃刀视图却没有.

我还尝试扩展,DefaultViewComponentDescriptorProvider以便BookStore.Components可以发现程序集中的视图组件:

定义了AssemblyProvider

 public class AssemblyProvider : IAssemblyProvider
    {
        public IEnumerable<Assembly> CandidateAssemblies
        {
            get
            {
                yield return typeof(AssemblyProvider).Assembly;
                yield return typeof(BookStore.Components.BookOfTheMonthViewComponent).Assembly;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

使用Autofac注册的AssemblyProvider

builder.RegisterType<AssemblyProvider>()
    .AsImplementedInterfaces();

builder.RegisterType<DefaultViewComponentDescriptorProvider>()
    .AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud)

我不确定是否DefaultViewComponentDescriptorProvider需要上面的注册,所以我尝试使用和不使用它,但我仍然在调用视图组件的页面上得到500错误.

如何从MVC6 Web项目中调用位于单独程序集中的视图组件?

c# asp.net-core-mvc asp.net-core asp.net-core-viewcomponent

19
推荐指数
1
解决办法
5107
查看次数