Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 13486|Resposta: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Copiar link]
Publicado em 19/07/2015 23:37:53 | | |
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.





Anterior:ASP.NET---- implementar um botão de clique ou link para abrir o diálogo de login
Próximo:Defina o CheckBoxList para não envolver a linha
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com