Насколько сложно было добавить страницу ASPX в библиотеку классов ?! Его нет в списке по умолчанию при выборе «Добавить новый элемент ...».
Я знаю, что можно хранить контроллеры и модели в отдельной библиотеке DLL / сборке библиотеки, но я уверен, что хранить или делиться представлениями не так просто. Проблема заключается в том, что механизм просмотра по умолчанию ищет в определенной папке на диске представление (~ / Views / Controller / ViewName.as [pc] x или ~ / Views / Shared / ViewName.as [pc] x). С библиотекой DLL компилятор не имеет представления о том, что он может делать с вашим файлом ASPX. Это не код, поэтому, если у вас нет набора «Build Action», он просто игнорирует его. Существуют различные «встроенные действия», но я думаю, что ваши единственные варианты - «Копировать» и «Вставить как ресурс». Копировать не будет копировать в нужную вам папку (папку Views в вашем веб-проекте ASP.NET MVC), хотя вы могли бы написать сценарий сборки или 'Custom Tool' , который это сделал это для вас (с небольшим количеством работы).
Известность Hammett (из Castle Monorail) (а теперь и сотрудника MS) вышла с образцом, который позволяет хранить представления внутри сборок библиотеки, используя собственный класс VirtualPathProvider, который может копаться в DLL и извлекать представление ( встроен как ресурс). Пример приложения в данный момент является просто концепцией, поэтому вы можете столкнуться с некоторыми препятствиями, но, похоже, это работает и выглядит как захватывающее направление. Вы можете найти его в своем блоге здесь: MEF и ASP.NET MVC sample . Загрузите код и изучите его.
Это сообщение в блоге Плагины ASP.NET MVC написано не тем же автором, что и приведенный выше, но оно дает еще один обзор темы и указывает на еще одно сообщение здесь, в StackOverflow, где задавался аналогичный вопрос. : Использование VirtualPathProvider для загрузки представлений ASP.NET MVC из DLL .
Я видел сообщение от Фила Хаааааааааааааааак о хранении представлений в базе данных. Он использует сценарии Ruby вместо веб-форм, поэтому я не уверен на 100%, можете ли вы адаптировать его образец под свои нужды или нет. Проверьте это здесь: Сценарии представлений ASP.NET MVC, хранящихся в базе данных .