Как мне вызвать Url.Action из класса HtmlHelper? - PullRequest
2 голосов
/ 25 ноября 2010

Я использовал

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

в моих представлениях (aspx). Но теперь я реорганизую часть разметки в созданный мной HtmlHelper.

Проблема в том, что у меня, кажется, нет правильных пространств имен, или в представлении есть ссылка на объект по умолчанию, о которой я не знаю. Дело в том, что компилятор не может найти Url.Action.

Ради простоты, вот что я пытаюсь сделать ...

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));
}

Как указать моему коду правильное использование Url.Action?

1 Ответ

12 голосов
/ 25 ноября 2010

soltion ... Url является частью UrlHelper. Вы можете получить экземпляр UrlHelper, если у вас есть HtmlHelper следующим образом ...

new UrlHelper(helper.ViewContext.RequestContext)

это объект, который выставляет url.Action

...