2012-02-20 7 views
22

Jestem w trakcie generowania adresu URL dynamicznie na mojej stronie cshtml. Jaka jest różnica między Url.RouteUrl() & Url.Action()?Różnica między Url.RouteUrl() i Url.Action() w MVC3

Którego użyć do wygenerowania adresu URL: &, co różni różnica między wersją a implementacją?

Z góry dziękuję.

Odpowiedz

45

wygenerował adres URL na podstawie nazwy trasy. Jeśli masz wiele tras o podobnych parametrach, metoda Action może wybrać niewłaściwą - działa w oparciu o kolejność definicji tras. Może to mieć miejsce, gdy trasy mają opcjonalne parametry.

Jeśli chcesz się upewnić, że określony adres URL trasy będzie używany, musisz zadzwonić pod numer RouteUrl, przekazując tę ​​nazwę trasy. Nazwy tras są unikalne i wyraźnie identyfikują trasę.

Jeszcze jedna różnica polega na tym, że Action jest specyficzne dla MVC (używa kontrolera i nazw akcji), natomiast RouteUrl jest ogólne i może być używane bez MVC (możesz mieć routing w WebForms).

16

Url.RouteUrl pozwala określić konkretną trasę według nazwy. To użyje siły użycia tej trasy. Url.Action wybierze po prostu pierwszą trasę spełniającą kryteria.

+0

Oznacza to również, że Url.RouteUrl jest lepszy pod względem wydajności niż Url.Action – Ranganatha