Html.RenderPartial в MasterPage - PullRequest
       14

Html.RenderPartial в MasterPage

0 голосов
/ 11 января 2011

Я пытался организовать грязную мастер-страницу из проекта, над которым я должен работать, используя RenderPartials, так как его код был действительно нечитаемым. В зависимости от роли пользователя данные основного контента отображаются тем или иным способом. Я сделал это:

<!-- Header -->
<% Html.RenderPartial("SiteHeaderPartialView"); %>

<!-- Content -->
<% Html.RenderPartial("ContentPartialView"); %>

<!--Footer -->
<% Html.RenderPartial("SiteFooterPartialView"); %>

Затем в ContentPartialView, после проверки роли пользователя, я наконец-то использую тег:

<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder> 

Но когда сайт отображается, я получаю сообщение об ошибке: «Не удается найти ContentPlaceHolder 'MainContent' на главной странице». Итак, мой вопрос заключается в следующем: возможно ли использовать RenderPartials в MasterPage и поместить в них ASP ContentHolders? Это почему? Есть ли другой способ реорганизации MasterPage, чтобы я мог выглядеть чище и читабельнее? Заранее благодарю за советы.

1 Ответ

1 голос
/ 12 января 2011

Тег asp:ContentPlaceHolder должен использоваться на главной странице. На страницах контента вам необходимо использовать asp:Content. Но с Html.RenderPartial вы не можете их использовать, он просто вставляет частичную страницу ASCX в указанное место. Итак, вот три распространенных способа создания макетов: asp:ContentPlaceHolder с asp:Content тегами, Html.RenderPartial и Html.RenderAction / Html.Action помощники.

...