Existe alguma diferença entre HTML.ActionLink
vs Url.Action
ou eles são apenas duas maneiras de fazer a mesma coisa?
Quando devo preferir um ao outro?
asp.net-mvc
asp.net-mvc-3
razor
Pankaj Upadhyay
fonte
fonte
Html.ActionLink
para gerá-los. Não tente fazer essas micro otimizações. Você terminará com um código feio em suas visualizações.<a>
). Use Url.Action quando precisar gerar apenas um URL (isso também pode ser usado em uma ação do controlador).Url.Action
é muito mais performativo queHtml.ActionLink
. Eu tinha uma lista de 6.000 itens que tinham 2Html.ActionLinks
. Foram necessários 6.600ms para renderizar a lista. Sem oHtml.ActionLinks
levou 52ms. Usá-Url.Action
lo levou 270ms. É verdade que 6000 itens são uma lista grande, mas achei que eu a adicionaria para referência futura.Html.ActionLink
gera uma<a href=".."></a>
tag automaticamente.Url.Action
gera apenas um URL.Por exemplo:
gera:
e
gera:
O melhor ponto positivo que eu gosto é de usar
Url.Action(...)
Você está criando uma marca de âncora por conta própria, onde é possível definir seu próprio texto vinculado facilmente, mesmo com alguma outra marca html.
fonte
No exemplo acima, você pode ver que, se eu precisar especificamente de um botão para executar alguma ação, devo fazê-lo com @ Url.Action, enquanto que, se eu quiser apenas um link, utilizarei @ Html.ActionLink. O ponto é quando você precisa usar algum elemento (HTML) com o URL de ação.
fonte
@HTML.ActionLink
gera umHTML anchor tag
. Enquanto@Url.Action
gera umURL
para você. Você pode entender isso facilmente;Ambas as abordagens são diferentes e depende totalmente da sua necessidade.
fonte
Você pode apresentar facilmente Html.ActionLink como um botão usando o estilo CSS apropriado. Por exemplo:
fonte
Usei o código abaixo para criar um botão e funcionou para mim.
fonte