Getting Absolute URL fron an ASP.NET MVC Action

后端 未结 7 629
北恋
北恋 2020-12-07 19:37

This probably is a dummy question but I cannot find a clear indication. I have a POCO class in a MVC3 web application whose only purpose is managing the backup of some files

7条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-07 20:34

    I wrote a helper class for this, for MVC 5... It's pretty flexible, and is particularly useful if you need this functionality when you aren't inside a controller. You should be able to drop it right into a project and go.

    As Meligy pointed out, the key is to include the protocol. Here I have it hard coded as http, so if you want to use SSL that might need to become a bit more flexible.

    public class AbsoluteUrlHelper
    {
        /// 
        /// Creates an absolute "fully qualified" url from an action, and assumes the current controller.
        /// 
        /// 
        public static string GetAbsoluteUrl(string action, object routeValues = null)
        {
            var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
            var values = urlHelper.RequestContext.RouteData.Values;
            var controller = values["controller"].ToString();
    
            return GetAbsoluteUrl(action, controller, urlHelper, routeValues);
        }
    
        /// 
        /// Creates an absolute "fully qualified" url from an action and controller.
        /// 
        public static string GetAbsoluteUrl(string action, string controller, object routeValues = null)
        {
            var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
    
            return GetAbsoluteUrl(action, controller, urlHelper, routeValues);
        }
    
        /// 
        /// Creates an absolute "fully qualified" url from an action and controller.
        /// 
        public static string GetAbsoluteUrl(string action, string controller, UrlHelper urlHelper, object routeValues = null)
        {
            var uri = urlHelper.Action(action, controller, routeValues, "http");
    
            return uri;
        }
    }
    

提交回复
热议问题