2010-01-02 8 views
7

Wie berechnet HtmlHelper.ActionLink (htmlhelper, string linktext, string action) die richtige Route?Gegeben htmlHelper + action name, wie Controller Name herauszufinden?

Wenn ich dieses =>

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

Mvc automatisch richtige Route herausfindet.

d. H. - wenn Controller Produkt war, wird der Anker mit href product/edit gerendert.

Also - wie Controller Name herauszufinden, wenn ich htmlHelper + Aktion Name Combo bekam?

Antwort

15

Wenn Ihr Htmlhelper sieht ungefähr so ​​aus:

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

    return ... some stuff ... 
} 

Dann von Ihrem Helfer, Zugang:

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

Die Routedata-Objekt alle Werte enthält, die von ASP.NET-Routing für den aktuellen verarbeitet wurden anfordern. Dazu gehören die Parameternamen und -werte der Route, z. B. "{Controller}/{Aktion}/{ID}". Viele der integrierten ASP.NET MVC-Helfer greifen von dort Umgebungsdaten auf, sodass der Entwickler sie nicht für jeden von ihnen verwendeten Helfer eingeben muss.

Sie können auch von hier den vollständigen Quellcode zu ASP.NET MVC herunterladen:

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

Haben/gesehen diese zuvor. Bin gerade verwirrt. Vielen Dank. :) –