2010-11-24 21 views
2

Je l'ai utiliséComment appeler Url.Action à partir d'une classe HtmlHelper?

Url.Action("actionFoo", "controllerBar") 

dans mes vues (ASPX). Mais maintenant, je suis en train de refactoriser une partie de mon balisage sur un HtmlHelper que j'ai créé. Le problème est que je ne semble pas avoir les espaces de noms appropriés inclus ou la vue a une référence d'objet par défaut que je ne connais pas. Point est le compilateur ne peut pas trouver Url.Action.

Par souci de simplicité ici est ce que je suis en train de faire ...

public static MvcHtmlString RenderActionButtons(this HtmlHelper helper, string actionName, string controllerName) 
{ 
    TagBuilder customActionButtonTagBuilder = new TagBuilder("a"); 
    customActionButtonTagBuilder.Attributes.Add(new KeyValuePair<string, string>("href", Url.Action(actionName, controllerName))); 
    customActionButtonTagBuilder.InnerHtml = "foo"; 
    customActionButtonTagBuilder.AddCssClass("custom-action-button"); 

    return MvcHtmlString.Create(customActionButtonTagBuilder.ToString(TagRenderMode.Normal)); 
} 

Comment puis-je pointe mon code pour l'utilisation correcte de Url.Action?

+0

double possible de [Générer URL aide HTML] (http: //stackoverflow.com/questions/1443647/generate-url-in-html-helper) – Marijn

Répondre

11

soltion ... Url fait partie d'un UrlHelper. Vous pouvez obtenir une instance de l'UrlHelper si vous avez la HtmlHelper comme suit ...

new UrlHelper(helper.ViewContext.RequestContext) 

c'est l'objet qui expose url.Action