1. RenderBody No motor Razor, não há uma "página mestre", em vez disso uma página chamada "layout" (_Layout.cshtml) é colocada na pasta de visualização compartilhada. Nesta página, você verá uma declaração na tag: @RenderBody() Na verdade, funciona de forma semelhante ao controle do servidor na página mestre: quando uma visualização baseada nessa página de layout é criada, o conteúdo da visualização é fundido com a página de layout, e o conteúdo da nova visualização é renderizado entre os rótulos pelo método @RenderBody() da página de layout. Esse método não requer parâmetros e só pode aparecer uma vez. 2. RenderPage Como você pode imaginar pelo nome, esse método é apresentar uma página. Por exemplo, o cabeçalho fixo em uma página web pode ser colocado separadamente em um arquivo de visualização compartilhada e, em seguida, chamado nesse método na página de layout, da seguinte forma: @RenderPage("~/Visualizações/Compartilhado/_Header.cshtml") Com parâmetros @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you") Ligue para a página para obter os parâmetros: Faça os parâmetros passarem pelo RenderPage(). @PageData["param"] 3. RenderSection A página de layout também possui o conceito de seção, ou seja, se uma seção for definida em um modelo de visualização, ela pode ser apresentada separadamente da seguinte forma: @RenderPage("~/Visualizações/Compartilhado/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection ("cabeça") Claro, também defina a seção na visão, caso contrário ocorrerá uma exceção: @section cabeça{
//do
} Para evitar exceções devido a seções ausentes, você pode dar um segundo argumento ao RenderSection(): @RenderSection("Submenu", falso) ou @if (IsSectionDefined("Submenu"))
{ @RenderSection("Submenu", falso)
} senão
{ <p>A seção de Submenu não está definida!</p>
}
4.@Html.Partial A Partial cria sua própria instância do TextWriter a cada vez e armazena o conteúdo em cache na memória. Por fim, envie toda a saída do gravador para um objeto MvcString Na maioria das vezes, usamos @{ html.RenderPartial("details"); em vez de @Html. Parcial A diferença entre RenderPage() e RenderPartial(). Chamadas RenderPage() só podem usá-lo para passar dados além do local. O RenderPartial() pode usar viewdata, modelo e outros dados. A diferença entre Html.RenderPartial e Html.RenderAction Html.RenderPartial é adequado para UserControl repetidos e só precisa ser usado para renderizar conteúdo por meio de modelos, ou para UserControls para anúncios. Html.RenderAction chamará primeiro o método Action do Controlador; se esse UserControl precisar obter dados do banco de dados para renderizar (ler o banco de dados através da Ação), esse método é mais adequado para esse momento. 5.Html.Parcial("MyView") Devolva um fluxo de tentativa como uma MvcHtmlString, seguindo regras padrão de roteamento. Renderiza a visualização "MyView" em uma MvcHtmlString. Ele segue as regras padrão para consulta de visualização (ou seja, verifique o diretório atual e depois verifique o diretório Compartilhado). Html.RenderPartial("MyView")
Semelhante ao Html.Partial(), a diferença é que ele é digitado diretamente na página sem cache. Faz o mesmo que o Html.Partial(), exceto que ele escreve sua saída diretamente no fluxo de resposta. Isso é mais eficiente, porque o conteúdo da visualização não é armazenado em memória. No entanto, como o método não retorna nenhuma saída, @Html.RenderPartial("MyView") não funciona. Você precisa envolver a chamada em um bloco de código: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Retorna uma visualização especial com caminhos, nomes de arquivos, etc., e exporta diretamente como Heml.RenderPartial() sem cache. variáveis do modelo podem ser passadas. Renderiza a visualização especificada (identificada pelo caminho e nome do arquivo em vez do nome da visualização) diretamente para o fluxo de resposta, como Html.RenderPartial(). Você pode fornecer qualquer modelo que quiser para a visualização incluindo-o como um segundo parâmetro RenderPage("MyView.cshtml",MyModel)
Prefiro
@RenderPage("_LayoutHeader.cshtml")Câmbio @{Html.RenderPartial("_LayoutHeader"); }Só porque a sintaxe é mais fácil e mais legível. Fora isso, não parece haver diferenças em termos de funcionalidade.
|