2009-04-18 13 views
6

Ich habe einen Controller namens "AccountController" und Aktion namens "ResetPassword". Von der HTML Markup kann ich etwas tun wie:Route zu Controller-Aktion (URL) programmgesteuert

<%= Html.ActionLink("LinkText", "ResetPassword", "AccountController") %> 

und es wird die richtige URL ausgeben. Gibt es eine Möglichkeit, dies programmatisch zu tun? Ich versuche, die URL als eine Zeichenfolge in einer anderen Klasse zu erhalten, aber System.Web.Mvc.HtmlHelper hat keine statische ActionLink() -Methode und das Erstellen einer Instanz der Klasse hat es auch nicht.

Hinweis: Wenn ich versuche, Instanzen von HtmlHelper oder UrlHelper zu erstellen, brauche ich Verweise auf den View-Kontext oder Anfragekontext und ich kann nicht herausfinden, wie man diese vom Controller bekommt (um zu meiner Klassenmethode zu gelangen)

Antwort

10

Verwenden Sie stattdessen Url.Action.

+0

Wenn ich versuche, eine Instanz von UrlHelper zu erstellen, wird nach einem "requestContext" gefragt. Wie bekomme ich den requestContext, damit ich eine UrlHelper-Instanz erstellen kann? – codette

+0

Wenn Sie sich in einem Controller befinden, verwenden Sie die HttpContext-Eigenschaft des Controllers. –

+0

Ich bin in einer Klasse außerhalb des Controllers und HttpContext.Current wird nicht funktionieren. Ich bekomme einen Syntaxfehler, es ist der falsche Typ. – codette

Verwandte Themen