21

jestem przyzwyczajony do generowania adresów URL trasa do innych działań regulatora w ramach działania kontrolera MVC za pomocą czegoś podobnego do przedstawionego poniżej:Generowanie trasy Url do MVC działania kontrolera z WebAPI

public class ApplicationController : Controller 
{ 
    public ActionResult Index() 
    { 
     var url = Url.RouteUrl("routename", 
      new { controller = "Application", Action = "Index2" , other="other" }); 
    } 

    public ActionResult Index2(string other) 
    { 
    } 
} 

Ale też trzeba, aby móc generowanie adresów URL do działań kontrolera MVC również z poziomu webapi. Jak mam to zrobić?

Wygląda na to, że właściwość UrlHelper znajduje się na APIControllerze, ale nie mogę znaleźć żadnych przykładów, jak tego użyć i nie byłem w stanie sam tego rozgryźć.

AKTUALIZACJA: Powodem, dla którego próbuję wygenerować adres URL, jest to, że ta konkretna metoda webapi wysyła wiadomość e-mail, która zapewnia odbiorcy link do skierowania użytkownika z powrotem do odpowiedniej sekcji witryny. Oczywiście chcę odejść od hardcoding, ponieważ nie będzie działać w przypadku różnych wdrożeń, a także jeśli zacznę zmieniać routing ten link zostanie zerwany. Czy istnieje lepsze podejście do robienia tego?

Odpowiedz

27

Możesz również używać nazw tras MVC z interfejsem API UrlHelper. Przykład,

Url.Link("Default", new { Controller = "Account", Action = "Login" }); 

lub

Url.Route("Default", new { Controller = "Account", Action = "Login" }); 
+0

Jesteś poprawne. Dzięki – Kramer00

+0

@TrueBlueAussie patrzysz na zły UrlHelper. Popatrz na http, a nie na mvc. – Steve

+1

http://msdn.microsoft.com/en-us/library/system.web.http.routing.urlhelper_methods(v=vs.118).aspx. Jeśli używasz routingu atrybutów, nazwij trasy. – Steve