Вот чего я хочу достичь, я хочу отделить AREAs ASP.NET MVC как чистую одиночную DLL.
- Blog.DLL
- Forums.DLL
- FAQ.DLL
Каждая из них представляет собой отдельную ASP.NET MVC Area со своими собственными страницами CSHTML или ASPX по умолчанию. Установка, перенос и поддержание большого количества страниц, включая ресурсы, javascripts и т.д., - настоящая боль для длительной работы. Поскольку большинство из них вряд ли изменится.
Мой последний сайт будет таким.
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
Не добавляя ничего, просто отбрасывая Blog.dll, мое приложение должно поддерживать/блог и все его страницы. Если я хочу что-то настроить, чем добавить область и добавить только cshtml-страницы.
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Areas
\Blog
\Views
\Shared
\BlogLayout.cshtml <-- this will override the look
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
Это поможет повторно использовать плагины ASP.NET Area, просто отбросив dll в папке bin. Однако web.config может потребовать внесения некоторых изменений, но, скорее всего, мы сохраним значения конфигурации в базе данных, и только нужно, чтобы это было "Строка подключения Entity Framework" в web.config.
Мои проблемы (вопросы)
- Возможно ли это? Он уверен, что я смотрю, но будут ли какие-либо проблемы с отражением/разрешением?
- Как включить представления cshtml/aspx в пределах одной DLL? Возможно, скомпилированные версии? Я видел пару текстовых шаблонов View Engine на Codeplex, но я немного смущен тем, как их использовать.
- И как мне заставить ViewEngine сначала проверить, существует ли файл физической директории или нет, а затем просмотреть cshtml/aspx внутри самой библиотеки dll в качестве файла ресурсов?