Заметил, что это все еще без ответа. Начиная с MVC 1.0, вы можете:
public static string NewHelperMethod(this HtmlHelper helper)
{
UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);
Как упомянуто выше, просто расширьте HtmlHelper, и контекст представлен таким образом. Например:
public static string ExtensionMethodName(this HtmlHelper html,object o)
{
html.ViewContext.HttpContext.Request.Uri ... etc
}
Не создавайте новый. Просто расширьте существующий UrlHelper, точно так же, как Вы расширили бы HtmlHelper:
public static string IdLink(this UrlHelper helper, Guid id)
{ //...
, Если необходимо использовать и HtmlHelper и UrlHelper, передайте одного из них как постоянный клиент (не - "это") аргумент.
Возможно, вы нашли ответ в другом месте, но здесь:
В действии контроллера вы можете перейти к текущему контексту запроса следующим образом:
public ActionResult SomeAction(){
var helper = new UrlHelper(this.ControllerContext.RequestContext);
...
}
Если текущий IHttpHandler - MvcHandler, вы можете использовать
((MvcHandler)HttpContext.Current.Handler).RequestContext