Будет ли механизм просмотра Spark взаимодействовать с главными страницами веб-форм? - PullRequest
1 голос
/ 08 октября 2009

Мне очень нравится Spark, но у нас уже есть большие инвестиции в представления на основе веб-форм. Я хотел бы начать использовать Spark без необходимости конвертировать все мои существующие представления заранее.

Единственная проблема, с которой я сталкиваюсь, когда Spark работает параллельно с веб-формами, это главные страницы. В настоящее время у меня есть макеты искры, которые являются 1 на 1 дубликатов мастер-страниц.

Это количество дублирования не приемлемо. Меня это уже укусило несколько раз.

Есть ли какой-нибудь способ заставить представления искры работать в мастере веб-форм? Или для представления веб-форм для работы в макете искры? Либо бы решить проблему дублирования.

Ответы [ 5 ]

5 голосов
/ 25 января 2010

Способ, которым я достиг этого, состоял в том, чтобы переместить большую часть содержимого моей главной страницы в частичные представления, а затем создать две главные страницы: Foo.Master и Foo.Master.spark, которые обе используют одинаковый Html.RenderPartial () звонки. Оба мастера имеют одинаковые именованные области содержимого. Это позволяет мне использовать любой движок для данного представления и делает дублирование настолько малым, насколько это возможно.

Предполагается, что отдельный механизм просмотра будет обрабатывать как свой мастер, так и вид. Звонок на IViewEngine:

FindView(System.Web.Mvc.ControllerContext controllerContext, string viewName, string masterName, bool useCache)

Не отображает мастер отдельно от вида.

Spark использует это для компиляции мастера в представление и другие трюки с его многопроходным рендерингом.

1 голос
/ 08 октября 2009

Я так не думаю. Архитектурно эти два имеют совершенно разные и противоречивые способы рендеринга страницы. Чтобы это произошло, вам нужно сделать что-то, что эквивалентно iFrame, ужасно хитрый способ сделать это до такой степени, чтобы быть анти-паттерном.

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

Вы можете попытаться имитировать отображение главной страницы в движке искры. Не только визуально ... Я говорю о том, как собрать воедино домашний препроцессор главной страницы с помощью spark. Нелегкий рядок для мотыги.

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

Вы можете использовать свои существующие главные страницы с очень простой страницей .aspx, которая просто вызывает Html.RenderPartial («MySparkView»), чтобы получить искровой контент внутри существующих главных страниц.

0 голосов
/ 05 ноября 2009

Вам повезло?

Мне удалось разместить представление искры в вызове System.Web.Mvc.ViewUserControl Html.RenderView () из представления искры. Могу поспорить, что я мог бы также разместить представление Spark в System.Web.Mvc.ViewUserControl, используя Html.RenderView (). Это вводит некоторые опции (все с накладными расходами) совместного использования главной страницы:

  1. Напишите простую обёртку .ascx для вас .spark views. У них был один и тот же объект модели, оболочка могла вызывать HtmlRenderPartial в упакованном представлении.

  2. (наоборот) Напишите простую оболочку .spark для ваших элементов управления .ascx.

Когда я пытался открыть представление Index.spark и использовать мастер-страницу Site.Master, я получил сообщение об ошибке:

The view 'Index' or its master could not be found. The following locations were searched:
~/Views/LfgSettings/Index.aspx
~/Views/LfgSettings/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
Layouts\Site.spark
Shared\Site.spark 

Я не знаю, что представляют эти пути, хотя, похоже, что это путь поиска для представления индекса и пути поиска для его главной страницы. Похоже, что файл .spark не может использовать мастер-страницу .master.

Интересно, возможно ли написать файл .master-обертки, который вызывает файл .spark с правильными областями содержимого. Некоторый Reflector'ing, вероятно, выкопает некоторые интерфейсы, которые могут быть созданы для совместной работы.

0 голосов
/ 08 октября 2009

Просто идея, попробуйте написать собственный движок представления (или настроить Spark), который будет отображать запрошенное представление .spark с использованием движка Spark, а затем вызывать движок WebForms, передавая ему обработанный контент - я думаю, это должно быть возможно, но я ничего не знаю об этих внутренних органах. Более простым способом было бы сохранить обработанный .spark HTML в .aspx и выбрать его для WebForms, но производительность не будет приемлемой.

В любом случае, я бы сказал, что это должно быть возможно, но 1) потребуется сложная настройка движков представления и 2) вы потеряете большую часть функциональности Spark / layouts, поскольку ваши представления .spark будут в основном отображаться как без разметки spark в все.

Также попробуйте спросить в списке рассылки Spark.

...