Подтвердить что ты не робот

Как получить доступ к текущему System.Web.Routing.RequestContext из пользовательского вспомогательного метода в ASP.NET MVC?

Я пишу вспомогательный метод для ASP.NET MVC, и мне нужно вызвать Url.Content, чтобы получить соответствующий URL для контекста. Однако, чтобы создать новый UrlHelper(), мне нужно получить текущий RequestContext (System.Web.Routing.RequestContext, если быть точным), и я не уверен, как его захватить. Кто-нибудь знает?

4b9b3361

Ответ 1

Заметили, что это все еще остается без ответа. С MVC 1.0 вы можете сделать:

public static string NewHelperMethod(this HtmlHelper helper)
{
    UrlHelper url = new UrlHelper(helper.ViewContext.RequestContext);

Ответ 2

Если текущий IHttpHandler является MvcHandler, вы можете использовать

((MvcHandler)HttpContext.Current.Handler).RequestContext

Ответ 3

Возможно, вы нашли ответ в другом месте, но здесь:

В действии контроллера вы можете перейти к текущему RequestContext следующим образом:

public ActionResult SomeAction(){
  var helper = new UrlHelper(this.ControllerContext.RequestContext);
  ...
}

Ответ 4

Не создавайте новую. Просто расширьте существующий UrlHelper, точно так же, как вы расширили HtmlHelper:

public static string IdLink(this UrlHelper helper, Guid id)
    { //...

Если вы должны использовать как HtmlHelper, так и UrlHelper, передайте один из них как обычный (не "this") аргумент.

Ответ 5

Как упоминалось выше, просто расширьте HtmlHelper, и контекст будет показан таким образом. Например:

    public static string ExtensionMethodName(this HtmlHelper html,object o)
    {
        html.ViewContext.HttpContext.Request.Uri ... etc    
    }