Eu preciso criar uma função que é necessária apenas dentro de um arquivo cshtml. Você pode pensar na minha situação como métodos de página do ASP.NET, que são min serviços da Web implementados em uma página, porque têm o escopo definido em uma página. Eu sei sobre auxiliares de HTML (métodos de extensão), mas minha função é apenas necessária em um arquivo cshtml. Não sei como criar uma assinatura de função dentro de uma exibição. Nota : Estou usando o mecanismo de modelo do Razor.
asp.net-mvc
asp.net-mvc-3
razor
Saeed Neamati
fonte
fonte
@functions
métodos, então eu gosto desta resposta.por que não declarar essa função dentro do arquivo cshtml?
fonte
functions
solução fornece mais flexibilidade para seus tipos de retorno. Ambas as respostas recebem +1 no meu livro, pois são informações úteis.<p>Welcome, @username.</p>
versusreturn new HtmlString("<p>Welcome, " + Html.Encode(username) + ".</p>");
.@helper
em uma única visualização não a torna disponível para outras visualizações. o motivo pelo qual eu gosto mais do @helper é que você pode colocar o html entre seus aparelhos.@functions
não (facilmente) permite que você faça isso.@helper
e@functions
podem ser compartilhados entre muitas visões, e ambos podem ser declarados e usados por uma única visão (e eu pessoalmente achei útil para eles em cenários compartilhados / únicos). IMHO, a única diferença prática entre eles é o fato de um auxiliar de exibição adicionar açúcar sintático para retornar trechos de HTML renderizados (ou, mais apropriados,HelperResult
instâncias), enquanto uma função de exibição geralmente é útil apenas para retornar tipos simples de referência ou valor.Se o seu método não precisar retornar html e precisar fazer outra coisa, você poderá usar um método lambda em vez do método auxiliar no Razor
fonte
Dê uma olhada em Ajudantes declarativos da navalha
fonte
Se você deseja acessar as variáveis globais da sua página, pode fazê-lo:
fonte
GetLoadingState()
aqui está a função local.