Url helper for full url in asp.net mvc-3

前端 未结 4 1741
离开以前
离开以前 2021-02-07 01:52

Writing

@Url.Content(\"~/Something/Something.html\")

in razor renders

/AppFolder/Something/Something.html

I

相关标签:
4条回答
  • 2021-02-07 02:16

    The @Url.RouteURL() does not quiet answer this question. It does work for named routes but falls short for arbitrary virtual paths. Here is quick helper method that generates full outbound url. You can create overloads for various schemes (http[s]) depending on the degree of control desired.

    public static class UrlHelperExtension
    {
        public static string ContentFullPath(this UrlHelper url,string virtualPath)
        {
            var result = string.Empty;
            Uri requestUrl = url.RequestContext.HttpContext.Request.Url;
    
            result = string.Format("{0}://{1}{2}",
                                   requestUrl.Scheme,
                                   requestUrl.Authority, 
                                   VirtualPathUtility.ToAbsolute(virtualPath));
            return result;
        }
    }
    
    0 讨论(0)
  • 2021-02-07 02:26

    For anyone needing to build URLs in WebAPI 2.2 and/or MVC5, this worked for me:

    // works in a controller
    var requestUri = this.Request.RequestUri;
    // just the http/s and the hostname; ymmv
    string baseUrl = requestUri.Scheme + "://" + requestUri.Authority + "/";
    // build your url for whatever purpose you need it for
    string url = baseUrl + "SomeOtherController?id=" + <some_magic_value>;
    
    0 讨论(0)
  • 2021-02-07 02:30

    See this blog post for the answer.

    Basically, all you need to do it include the protocol parameter e.g.

    Url.Action("About", "Home", null, "http")
    
    0 讨论(0)
  • 2021-02-07 02:36

    You can use a helper to produce a full url, including protocol. Note the first lowercase in url.Action.

    var url = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext);
    var fullUrl = url.Action("YourAction", "YourController", new { id = something }, protocol: System.Web.HttpContext.Current.Request.Url.Scheme);
    

    Output

    https://www.yourdomain.com/YourController/YourAction?id=something

    0 讨论(0)
提交回复
热议问题