Razor - MVC - главные страницы ASP.NET - способ каким-то образом отобразить несколько разделов Razor на несколько блоков содержимого главной страницы? - PullRequest
0 голосов
/ 09 декабря 2011

Razor минимально работает с мастер-страницами, используя следующую технику:

http://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx

Это работает почти идеально (вызов RenderPartial из MasterPage в RazorView.) Единственный недостаток - у меня есть 3 блока контента (элементы управления) на моей главной странице. Концептуально это соответствует Razor Layout с 3 разделами с одинаковыми именами.

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

Я попытался установить ViewBag.Layout в каждом разделе мастер-страницы и иметь 3 макета Razor, отрисовывающих 3 раздела, основанных на макете бритвы [нижний колонтитул, заголовок и тело]. Проблема в том, что Razor не позволяет мне визуализировать бритвенное представление, реализуя несколько разделов через макет, отображая только один раздел. (Это заставляет меня сделать все 3).

Моя другая попытка состояла в том, чтобы макет бритвы отображал разметку элемента управления главной страницы вместе с видами бритвы. Это выглядит элегантно, но я получаю сообщение об ошибке, что коллекция элементов управления главной страницы доступна только для чтения.

Есть ли способ, позволяющий мне разрабатывать виды Razor для макета Razor и иметь несколько разделов макета, сопоставляемых с мастер-страницами, эквивалентными несколько (один работает отлично), блоки содержимого / разделы?

Редактировать: Обновлена ​​ссылка на статью по интеграции MasterPage / MVC.

1 Ответ

1 голос
/ 09 декабря 2011

Макеты и мастер-пейджеры - две разные вещи. Вы не можете смешивать и сопоставлять их на тех же страницах. Вам нужно будет воссоздать разделы главных страниц в макетах, если вы хотите конвертировать. Со временем вы можете избавиться от дублирования, избавившись от главных страниц.

То, что вы могли бы сделать, это извлечь соответствующую часть обеих главных страниц в одну частичную страницу, а затем вставить ее как в макет, так и в главные страницы, используя частичную часть. Таким образом, ваш раздел контента и раздел бритвы будут содержать только один Html.Partial (), который вставляет общий код в оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...