MVC3 и виртуальное представление без VirtualPathProvider
У меня есть приложение MVC3, и у меня есть несколько моих просмотров контента, сохраненных в базе данных в виде строки. Теперь мне нужно создать виртуальное представление и вернуть его клиенту. Я прочитал, что это может быть сделано с помощью VirtualPathProvider. Но хотел знать, может ли это быть сделано RazorViewEngine или нет.
РЕДАКТИРОВАТЬ1: я использовал VPP, как предлагается в этой ссылке http://blog.rocketbase.co.uk/2011/04/asp-net-mvc-virtual-path-provider/. И я зарегистрировал это в файле global.asax. У меня есть довольно большое веб-приложение, которое имеет много представлений, которые также присутствуют в проекте. Поэтому после регистрации VPP в global.asax я обнаружил, что
- каждый запрос в веб-приложении проходит через этот VPP. Будь то для физического или динамического просмотра. Так не будет ли удар по производительности для этого? И можем ли мы контролировать этот вызов в VPP, отслеживая URL?
- Также в моем проекте есть только файлы.cshtml, но mvc пытается найти файлы.ascx, .aspx, .vbhtml и т. Д. И т. Д. Что, опять же, я чувствую, окажет негативное влияние на производительность.
1 ответ
RazorViewEngine
использует провайдера виртуального пути (VPP) для поиска файлов. VPP по умолчанию в ASP.NET находит файлы на диске. Вы можете написать собственный VPP, который получает содержимое представления из базы данных. Если вы зарегистрируете пользовательский VPP в ASP.NET, MVC наверняка сможет скомпилировать, загрузить и отобразить эти представления.
Альтернативой может быть написание совершенно нового движка представления - но это не простая задача. Если вы не хотите использовать VPP, то я думаю, что вам нужно написать собственный движок представления, потому что два встроенных движка представления, конечно, не поддерживают это.