Как я могу получить относительный Uri для текущего метода действия контроллера? - PullRequest
1 голос
/ 17 февраля 2012

Я пытаюсь использовать этот метод расширения UrlHelper:

public static string ToPublicUrl(this UrlHelper urlHelper, Uri relativeUri)
{
    var httpContext = urlHelper.RequestContext.HttpContext;

    var uriBuilder = new UriBuilder
    {
           Host = httpContext.Request.Url.Host,
           Path = "/",
           Port = 80,
           Scheme = "http",
    };

    if (httpContext.Request.IsLocal)
    {
        uriBuilder.Port = httpContext.Request.Url.Port;
    }

    return new Uri(uriBuilder.Uri, relativeUri).AbsoluteUri;
}

Этот метод принимает относительный Uri в качестве параметра.Я пытаюсь вызвать этот метод в действии контроллера и не могу понять, как получить относительный Uri для текущего действия

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Вы можете получить относительный путь на основе конкретного имени действия, используя:

urlHelper.Action("someActionName" /*, "someControllerName" */);

И вы можете получить значения someActionName и someControllerName для текущего действия, используя:

ViewContext.Controller.ValueProvider["action"].RawValue
ViewContext.Controller.ValueProvider["controller"].RawValue
0 голосов
/ 17 февраля 2012

Используйте метод MakeRelativeUri

Uri result= uriBuilder.Uri.MakeRelativeUri(relativeUri);
return result.ToString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...