Встраивание видов Razor в библиотеку классов в качестве ресурсов - PullRequest
3 голосов
/ 06 января 2011

Я использую VirtualPathProvider для предоставления тематических представлений.

В методе действия я хочу вернуть представление по пути

return View("~/Themes/SomeTheme.dll/Views/Content/Item.cshtml");

В Visual Studio Item.cshtml есть действие по сборке «Встроенный ресурс».
VirtualPathProvider находит этот файл .cshtml, но я получаю сообщение об ошибке

The view at '~/Themes/SomeTheme.dll/Views/Content/Item.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.

Думаю, мне нужно скомпилировать это представление, и я следовал этим инструкциям .

Теперь VirtualPathProvider не может найти Item.cshtml, поскольку он больше не является встроенным ресурсом.

Как мне решить эту проблему? Я не могу добавить ссылку на этот SomeTheme.dll, потому что активированная тема загружается динамически при запуске приложения.

Я делал это раньше с файлами aspx, и их не нужно было компилировать. Они работали из коробки как встроенные ресурсы.

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Я столкнулся с подобной проблемой со встроенными представлениями aspx. Компиляция, которая происходит при просмотре страницы, основана на некоторых настройках в файле web.config папки views. Встроенные ресурсы не находятся в папке представлений, поэтому не используйте эти настройки и не сможете скомпилировать.

1 голос
/ 16 апреля 2014

Попробуйте install-package EmbeddedResourceVirtualPathProvider

0 голосов
/ 22 ноября 2011

Попробуйте это решение для обработки intellisense в вашей библиотеке классов просмотра.Вам может потребоваться добавить следующую строку в этот файл web.config.

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />        

Также попробуйте добавить операторы @Inherits System.Web.Mvc.WebViewPage к каждому из ваших встроенных представлений (или заменить базовое предложениеиспользовать), чтобы справиться с этим во время выполнения.

...