Я пытаюсь встроить представления во внешнюю dll вместе с css и js для них. Я в основном там. Я делаю Html.RenderPartial из моего основного проекта и, кажется, находит встроенный просмотр и css и js без проблем (используя VirtualPathProvider).MVC embedded views
Однако этот встроенный вид вызывает действие (во внешней dll), которое возвращает PartialView (также встроенный). Представление найдено (и я поставил оператор @inherits System.Web.Mvc.WebViewPage вверху, чтобы избежать ошибок в отношении «модели, не найденной в контексте»).
Однако последнее препятствие, кажется, ошибка о «... WebViewPage не содержит определение для„Displayfor“.....», потому что я использую @ Html.DisplayFor (.....
Может ли кто-нибудь сказать мне, что мне нужно сделать для этого финального фрагмента головоломки? Я скопировал файл web.config из папки «Views» в папку bin, в которой находятся мои dll (как будто это было связано с другими сообщениями) но это не помогло.
спасибо очень много
PS Когда действие сборки для представлений был установлен Copy To Output Directory, и я использовал ViewEngine для указывают на каталог bin/views, все работает нормально. Это только теперь, когда я изменил Внедренный Ressource
Эта библиотека уже упоминается в проекте. Фактически внешняя dll представляет собой полный проект веб-сайта Mvc - возможно, излишне, но это был быстрый способ обеспечить, чтобы весь синтаксис бритвы имел intellisense и т. Д. Таким образом, он есть, но, очевидно, мне не хватает трюка с преобразованием встроенной строки ресурса в скомпилированное представление. Нужно ли устанавливать свойство Custom Tool? Нужно ли устанавливать надстройку генератора Razor? Эта запись уже существует в моем файле проекта – user2047485
Нет, вы не пропустите «трюк». Это все, ваш VirtualPathProvider несет ответственность за то, что представление доступно, когда Razor решает его скомпилировать. Вы должны убедиться, что он компилируется. Трудно сделать это: исследовать вывод ваших представлений в папке «Временная папка ASP.NET». Или, чтобы сделать вещи немного проще, добавьте (или аналогичный) в свой Интернет.config, а затем выкопайте его. Не очень интересно, но помогает. –
Он не жалуется на @ Html.Raw только Html.DisplayFor. Я вынул DisplayFors, но оставил Raw, и это работает нормально. Должен ли мой VirtualPathProvider делать больше, чем возвращать новый EmbeddedVirtualFile (virtualpath, stream) потоком только GetManifestResourceStream (resourceName)? Нужно ли мне что-то делать с ним? – user2047485