ASP.NET MVC 6: просмотр компонентов в отдельной сборке
Я хотел бы определить компоненты представления (которые являются новыми в ASP.NET MVC 6) в отдельной сборке из веб-проекта запуска MVC 6, чтобы я мог повторно использовать их в нескольких веб-проектах. Пример решения может выглядеть следующим образом:
BookStore.Components(содержит компоненты общего вида)BookStore.Web1(ссылки BookStore.Components)BookStore.Web2(ссылки BookStore.Components)Я создал новую библиотеку классов (пакет) и создал компонент вида внутри. Я также создал представление в соответствии с соглашением о вложенных папках. мойBookStore.Components
Проект выглядит так:
Когда я пытаюсь вызвать этот компонент представления из моего веб-проекта:
@Component.Invoke("BookOfTheMonth")
... Я получаю ошибку 500 с пустым телом контента. Кажется, что класс ViewComponent обнаружен, но бритвенное представление для компонента - нет.
Я тоже пытался продлитьDefaultViewComponentDescriptorProvider
так что смотреть компоненты изBookStore.Components
Сборка может быть обнаружена:
public class AssemblyProvider : IAssemblyProvider
{
public IEnumerable<Assembly> CandidateAssemblies
{
get
{
yield return typeof(AssemblyProvider).Assembly;
yield return typeof(BookStore.Components.BookOfTheMonthViewComponent).Assembly;
}
}
}
Зарегистрированный AssemblyProvider с использованием Autofacbuilder.RegisterType<AssemblyProvider>()
.AsImplementedInterfaces();
builder.RegisterType<DefaultViewComponentDescriptorProvider>()
.AsImplementedInterfaces();
Я не уверен, что регистрацияDefaultViewComponentDescriptorProvider
Требуется выше или нет, поэтому я попытался с этим и без него, но я все еще получаю ошибку 500 на странице, где вызывается компонент представления.
Как вызвать компонент представления, который находится в отдельной сборке от веб-проекта MVC6?