2010-01-02 5 views
7

In che modo HtmlHelper.ActionLink (htmlhelper, string linktext, string action) calcola il percorso corretto?Dato htmlHelper + nome dell'azione, come capire il nome del controller?

Se ho questo =>

HtmlHelper.ActionLink("Edit","Edit") 

MVC trova automaticamente fuori rotta corretta.

, ad esempio - se il controller era Prodotto, verrà ancorata con href product/edit.

Quindi, come calcolare il nome del controller quando ho ottenuto htmlHelper + nome azione combo?

risposta

15

Se il HtmlHelper sembra qualcosa di simile:

public static string MyHelper(this HtmlHelper htmlHelper, 
          ... some more parameters ...) { 

    return ... some stuff ... 
} 

Poi dal vostro aiutante, l'accesso:

RouteData routeData = htmlHelper.ViewContext.RouteData; 
string controller = routeData.GetRequiredString("controller"); 

L'oggetto RouteData contiene tutti i valori che sono state elaborate da ASP.NET Routing per la corrente richiesta. Questo includerà i nomi dei parametri e i valori della rotta, come "{controller}/{action}/{id}". Molti degli assistenti ASP.NET MVC incorporati acquisiscono i dati "ambient" da lì in modo che lo sviluppatore non debba inserirli per ogni helper che usano.

È possibile anche scaricare il codice sorgente completo di ASP.NET MVC da qui:

  1. ASP.NET MVC 1.0 RTM source code
  2. ASP.NET MVC 2 Release Candidate source code
+0

Hai mai visto/usato prima. Sono appena diventato confuso. Grazie. :) –