如何在为HtmlHelper编写扩展时调用UrlHelper

时间:2012-04-13 09:48:45

标签: asp.net-mvc-3 extension-methods

我有ASP.NET MVC3项目,我正在编写一些返回HTML的扩展方法,但我需要UrlHelper来渲染它们。要做到这一点,我正在扩展UrlHelper,但我不喜欢语义,因为UrlHelper应该使用URL和HtmlHelper与HTML。我想用这种方法扩展HtmlHelper而不是UrlHelper。

我的问题是我现在不知道如何从HtmlHelper的扩展方法访问UrlHelper,它甚至可能吗?或者我必须坚持使用UrlHelper扩展。

我知道我可以发送Url帮助作为参数,但我不太喜欢这个解决方案。

以下代码是我正在讨论的扩展方法示例:

public static HtmlString AnchorLink(this UrlHelper url, string text, string action, string anchor) {
    return new HtmlString(string.Format("<a href=\"{0}#{2}\">{1}</a>", url.Action(action), text, anchor));
}

由于

1 个答案:

答案 0 :(得分:23)

您可以自己实例化UrlHelper ...

public static HtmlString AnchorLink(this HtmlHelper html, string text, string action, string anchor) {
    var urlHelper = new UrlHelper(html.ViewContext.RequestContext);
}