Para um aplicativo ASP.NET MVC, vi este artigo do blog . O autor ScottGu adiciona @section
ao Index.cshtml.
Tenho algumas perguntas (consultando o artigo acima):
- Index.cshtml é uma Visualização compartilhada?
- O código de exemplo usa o
@section
código em uma exibição específica. Por quê?
Alguém pode explicar por que e quando eu usaria @section
em um View?
asp.net-mvc
A Bogus
fonte
fonte
Respostas:
@section
é para definir que um conteúdo seja substituído em uma exibição compartilhada. Basicamente, é uma maneira de você ajustar sua exibição compartilhada (semelhante a uma Página Mestra em Formulários da Web).Você pode achar que Scott Gu escreveu isso muito interessante .
Editar: com base em esclarecimentos adicionais de perguntas
A
@RenderSection
sintaxe entra na Visualização compartilhada, como:Isso seria colocado na sua visualização com
@Section
sintaxe:No MVC3 +, você pode definir o arquivo de Layout a ser usado diretamente para a visualização ou pode ter uma visualização padrão para todas as visualizações.
Configurações comuns de exibição podem ser definidas em _ViewStart.cshtml, que define a exibição de layout padrão semelhante a esta:
Você também pode definir a Visualização compartilhada para usar diretamente no arquivo, como index.cshtml diretamente, conforme mostrado neste snippet.
Existem várias maneiras de ajustar essa configuração com mais algumas mencionadas nesta resposta do SO .
fonte
Um bom exemplo é o Javascript. Você deseja que isso fique na parte inferior da página renderizada no navegador, porque essa é uma prática recomendada.
Como você faria isso a partir de uma exibição baseada em um layout / página principal, onde você só pode acessar o meio da página?
Você faz isso declarando uma seção Scripts na parte inferior da página Layout. Em seguida, você pode adicionar conteúdo, neste caso, o Javascript inclui (espero!), Da página Visualizar até a parte inferior da página de layout.
fonte
Você deseja usar seções quando desejar que um pouco de código / conteúdo seja renderizado em um espaço reservado que foi definido em uma página de layout.
No exemplo específico que você vinculou, ele definiu o RenderSection no _Layout.cshtml. Qualquer visualização que use esse layout pode definir uma seção @ com o mesmo nome definido em Layout e substituirá a chamada RenderSection no layout.
Talvez você esteja se perguntando como sabemos que o Index.cshtml usa esse layout? Isso se deve a um pouco da convenção MVC / Razor. Se você olhar para a caixa de diálogo em que ele está adicionando a visualização, a caixa "Usar layout ou página principal" está marcada e logo abaixo diz "Deixe em branco se estiver definido em um arquivo Razor _viewstart". Não é mostrado, mas dentro desse arquivo _ViewStart.cshtml existe um código como:
A maneira como os viewstarts funcionam é que qualquer arquivo cshtml dentro do mesmo diretório ou diretórios filho executará o ViewStart antes de ser executado.
Qual é o que nos diz que Index.cshtml usa Shared / _Layout.cshtml.
fonte
Permite definir um
@Section
código no seu modelo que pode ser incluído em outros arquivos. Por exemplo, uma barra lateral definida no modelo pode ser referenciada em outra visualização incluída.Espero que isto ajude.
fonte