Czy jest jakaś różnica między HTML.ActionLink
vs Url.Action
czy są to tylko dwa sposoby robienia tego samego?
Kiedy powinienem preferować jeden od drugiego?
asp.net-mvc
asp.net-mvc-3
razor
Pankaj Upadhyay
źródło
źródło
Html.ActionLink
ich , aby je wygenerować. Nie próbuj robić takich mikrooptymalizacji. Skończysz z brzydkim kodem w swoich widokach.<a>
). Użyj Url.Action, jeśli potrzebujesz wygenerować tylko adres URL (może to również zostać użyte w akcji kontrolera).Url.Action
jest znacznie bardziej wydajny niżHtml.ActionLink
. Miałem listę 6000 przedmiotów, które miały 2Html.ActionLinks
. Renderowanie listy zajęło 6600 ms. BezHtml.ActionLinks
tego zajęło 52 ms. Korzystanie zUrl.Action
niego zajęło 270 ms. To prawda, 6000 pozycji to duża lista, ale pomyślałem, że dodam ją na przyszłość.Html.ActionLink
generuje<a href=".."></a>
automatycznie tag.Url.Action
generuje tylko adres URL.Na przykład:
generuje:
i
generuje:
Najlepszy punkt plus, który lubię, to używanie
Url.Action(...)
Sam tworzysz tag zakotwiczenia, w którym możesz łatwo ustawić własny linkowany tekst, nawet przy użyciu innego tagu HTML.
źródło
W powyższym przykładzie widać, że jeśli konkretnie potrzebuję przycisku, aby wykonać jakąś akcję, muszę to zrobić za pomocą @ Url.Action, natomiast jeśli chcę tylko link, użyję @ Html.ActionLink. Chodzi o to, że musisz użyć jakiegoś elementu (HTML) z adresem URL akcji.
źródło
@HTML.ActionLink
generujeHTML anchor tag
. Podczas gdy@Url.Action
generujeURL
dla ciebie. Możesz to łatwo zrozumieć poprzez;Oba te podejścia są różne i zależy to całkowicie od twoich potrzeb.
źródło
Możesz łatwo przedstawić Html.ActionLink jako przycisk, używając odpowiedniego stylu CSS. Na przykład:
źródło
Użyłem poniższego kodu, aby utworzyć Button i zadziałało to dla mnie.
źródło