Gostaria de ter 2 layouts separados no meu aplicativo. Digamos que um seja para a seção Pública do site e o outro seja para o lado Membro.
Para simplificar, digamos que toda a lógica de cada um desses sites seja organizada em 2 controladores distintos.
- PublicController
- StaffController
E que cada um deles tenha um Layout correspondente para toda a Visualização em cada um.
- _PublicLayout.cshtml
- _StaffLayout.cshtml
Como uso o arquivo _ViewStart.cshtml para especificar que todas as View / Action em "Public" usam o PublicLayout e tudo em "Staff" usa o StaffLayout?
Obrigado!
asp.net-mvc
layout
asp.net-mvc-3
razor
Justin
fonte
fonte
Razor
exibição, basta definirLayout = null;
Respostas:
Você pode colocar um
_ViewStart.cshtml
arquivo dentro da/Views/Public
pasta que substituirá o padrão na/Views
pasta e especificar o layout desejado:Por analogia, você pode colocar outro
_ViewStart.cshtml
arquivo dentro da/Views/Staff
pasta com:Você também pode especificar qual layout deve ser usado ao retornar uma visualização dentro de uma ação do controlador, mas é por ação:
Outra possibilidade é um filtro de ação personalizado que substituiria o layout. Como você pode ver muitas possibilidades para conseguir isso. Você decide qual deles se encaixa melhor no seu cenário.
ATUALIZAR:
Conforme solicitado na seção de comentários, veja um exemplo de filtro de ação que escolheria uma página mestre:
e decore um controlador ou uma ação com este atributo personalizado, especificando o layout que você deseja:
fonte
LayoutInjecterAttribute
. ? Existe algum local em particular?ActionFilters
subpasta.LayoutInjecterAttribute
: É chamado antes doOnException
método do controlador . Portanto, se o controlador fornecer um resultado de exibição durante o tratamento de exceções, o layout não será definido.OnActionExecuted
. Você pode atualizar a resposta para mim.Mais um método é definir o layout dentro da tela:
Mais maneiras de fazer, podem ser encontradas aqui , espero que isso ajude alguém.
fonte
Esse método é a maneira mais simples para iniciantes de controlar a renderização de layouts no aplicativo ASP.NET MVC. Podemos identificar o controlador e renderizar os Layouts como um controlador par. Para isso, podemos escrever nosso código no arquivo _ViewStart no diretório raiz da pasta Views. A seguir, um exemplo mostra como isso pode ser feito.
Leia o artigo completo aqui "Como renderizar layout diferente no asp.net MVC"
fonte