如何获取当前控制器操作方法的相对Uri

本文关键字:操作方法 控制器 相对 Uri 何获取 获取 | 更新日期: 2023-09-27 18:24:54

我正在尝试使用这个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

有人能给我指正确的方向吗?

如何获取当前控制器操作方法的相对Uri

您可以使用获得基于特定操作名称的相对路径

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

您可以使用获取当前操作的someActionNamesomeControllerName

ViewContext.Controller.ValueProvider["action"].RawValue
ViewContext.Controller.ValueProvider["controller"].RawValue

使用MakeRelativeUri方法

Uri result= uriBuilder.Uri.MakeRelativeUri(relativeUri);
return result.ToString()