2009-04-15 3 views
2

Есть ли способ загрузить частичные представления из библиотеки классов?
Я хотел бы вытащить общие части с нескольких сайтов, чтобы упростить их обслуживание.Загрузить частичную библиотеку классов

В настоящее время я сделать мои партиалы с (например)

<%Html.RenderPartial("~/Views/Search/_searchBlock.ascx", ViewData);%> 

Это основано файл, но при создании библиотеки классов, мнения составляются. Есть ли способ загрузить библиотеки, которые скомпилированы в этой библиотеке?

+0

Это кажется очень полезная вещь, чтобы сделать, особенно при переносе приложения из WebForms для MVC. Возможно ли это в более поздних версиях asp.net mvc или mvc 2? –

+0

@Ashley. Я видел, как он использовался в учебнике некоторое время назад. Но поскольку я больше не работаю над этим проектом, я не использовал его на практике. Если мне удастся найти его снова, я отправлю ссылку позже –

ответ

0

Единственный способ, который я могу сделать, это сделать с embedded resources и пользовательским viewengine. Точка отражателя (или загрузить soruce MVC) в System.Web.Mvc.Html.RenderPartialExtensions

+0

Хм, возможно ли более простой способ сделать элементы управления доступными на нескольких сайтах? –

+0

Я не уверен, мне было бы интересно, если есть. Это будет небольшая работа, чтобы сделать это по-своему, вам нужно будет заменить вызов BuildManager.CreateInstanceFromVirtualPath тем, что читает текстовый поток для вашего файла из ресурсов сборки, скомпилируйте его в ViewUserControl. усилие в основном –

+0

возможно svn: externals могут вам помочь? –

0

См Фил Haacks new post для альтернативной идеи

+0

Он, я читал его, пока вы отвечали. Цените, чтобы вы вернулись к этому. Хотя он выглядит злым, я не вижу, как это может быть очень полезно в моем сценарии. Я думаю, что у меня будет удар по созданию моего собственного метода, который определяет виды. Таким образом, я мог бы, например, добавить appKey, который говорит, где они находятся, и все сайты будут искать его там, а затем искать в своей собственной папке. –

+0

Свой бизнес virtualpathprovider, вот что вам нужно переопределить/реализовать, чтобы делать то, что вы хотите –

+0

Хм, кажется, что рендеринг основан на файле до глубины в движке: S Это отстой. –

Смежные вопросы