21

Sono abituato a generare percorso URL alle altre azioni di controllo all'interno di un azione di controllo MVC utilizzando qualcosa di simile al di sotto:Generazione percorso URL per MVC azione di controllo da 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) 
    { 
    } 
} 

Ma ho anche bisogno di essere in grado di generare URL per le azioni del controller MVC anche da webapi, come potrei fare?

Sembra che ci sia una proprietà UrlHelper su APIController ma non riesco a trovare alcun esempio su come utilizzarlo e non sono stato in grado di capirlo da solo.

AGGIORNAMENTO: Il motivo per cui sto cercando di generare un url è che questo particolare metodo webapi invia una e-mail che fornisce al destinatario un link per indirizzare l'utente a una sezione appropriata del sito. Ovviamente voglio uscire da hardcoding perché non funzionerà per diverse distribuzioni e anche se comincio a cambiare il routing, questo link verrà interrotto. C'è un approccio migliore per fare questo?

risposta

27

È possibile utilizzare anche nomi di percorsi MVC con UrlHelper API Web. Esempio,

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

o

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

lei ha ragione. Grazie – Kramer00

+0

@TrueBlueAussie stai guardando l'UrlHelper sbagliato. Guarda quello http non quello di mvc. – Steve

+1

http://msdn.microsoft.com/en-us/library/system.web.http.routing.urlhelper_methods(v=vs.118).aspx. Se stai utilizzando il routing degli attributi, dai un nome ai percorsi. – Steve