diff --git a/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs b/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs index 437eec4e5c..014fd7ecd3 100644 --- a/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs +++ b/src/Umbraco.Web/Mvc/RedirectToUmbracoPageResult.cs @@ -17,6 +17,7 @@ namespace Umbraco.Web.Mvc { private IPublishedContent _publishedContent; private readonly int _pageId; + private readonly Guid _key; private NameValueCollection _queryStringValues; private readonly IUmbracoContextAccessor _umbracoContextAccessor; private string _url; @@ -49,14 +50,25 @@ namespace Umbraco.Web.Mvc get { return _pageId; } } + public Guid Key + { + get { return _key; } + } public IPublishedContent PublishedContent { get { if (_publishedContent != null) return _publishedContent; - //need to get the URL for the page - _publishedContent = Current.UmbracoContext.Content.GetById(_pageId); + if (_pageId != default(int)) + { + _publishedContent = Current.UmbracoContext.Content.GetById(_pageId); + } + + else if (_key != default(Guid)) + { + _publishedContent = Current.UmbracoContext.Content.GetById(_key); + } return _publishedContent; } @@ -91,6 +103,35 @@ namespace Umbraco.Web.Mvc { } + /// + /// Creates a new RedirectToUmbracoResult + /// + /// + public RedirectToUmbracoPageResult(Guid key) + : this(key, Current.UmbracoContextAccessor) + { + } + + /// + /// Creates a new RedirectToUmbracoResult + /// + /// + /// + public RedirectToUmbracoPageResult(Guid key, NameValueCollection queryStringValues) + : this(key, queryStringValues, Current.UmbracoContextAccessor) + { + } + + /// + /// Creates a new RedirectToUmbracoResult + /// + /// + /// + public RedirectToUmbracoPageResult(Guid key, string queryString) + : this(key, queryString, Current.UmbracoContextAccessor) + { + } + /// /// Creates a new RedirectToUmbracoResult /// @@ -157,6 +198,43 @@ namespace Umbraco.Web.Mvc _umbracoContextAccessor = umbracoContextAccessor; } + /// + /// Creates a new RedirectToUmbracoResult + /// + /// + /// + public RedirectToUmbracoPageResult(Guid key, IUmbracoContextAccessor umbracoContextAccessor) + { + _key = key; + _umbracoContextAccessor = umbracoContextAccessor; + } + + /// + /// Creates a new RedirectToUmbracoResult + /// + /// + /// + /// + public RedirectToUmbracoPageResult(Guid key, NameValueCollection queryStringValues, IUmbracoContextAccessor umbracoContextAccessor) + { + _key = key; + _queryStringValues = queryStringValues; + _umbracoContextAccessor = umbracoContextAccessor; + } + + /// + /// Creates a new RedirectToUmbracoResult + /// + /// + /// + /// + public RedirectToUmbracoPageResult(Guid key, string queryString, IUmbracoContextAccessor umbracoContextAccessor) + { + _key = key; + _queryStringValues = ParseQueryString(queryString); + _umbracoContextAccessor = umbracoContextAccessor; + } + /// /// Creates a new RedirectToUmbracoResult /// diff --git a/src/Umbraco.Web/Mvc/SurfaceController.cs b/src/Umbraco.Web/Mvc/SurfaceController.cs index 4fc53de4ae..1e2536ddb5 100644 --- a/src/Umbraco.Web/Mvc/SurfaceController.cs +++ b/src/Umbraco.Web/Mvc/SurfaceController.cs @@ -56,6 +56,38 @@ namespace Umbraco.Web.Mvc return new RedirectToUmbracoPageResult(pageId, queryString, Current.UmbracoContextAccessor); } + /// + /// Redirects to the Umbraco page with the given id + /// + /// + /// + protected RedirectToUmbracoPageResult RedirectToUmbracoPage(Guid key) + { + return new RedirectToUmbracoPageResult(key, Current.UmbracoContextAccessor); + } + + /// + /// Redirects to the Umbraco page with the given id and passes provided querystring + /// + /// + /// + /// + protected RedirectToUmbracoPageResult RedirectToUmbracoPage(Guid key, NameValueCollection queryStringValues) + { + return new RedirectToUmbracoPageResult(key, queryStringValues, Current.UmbracoContextAccessor); + } + + /// + /// Redirects to the Umbraco page with the given id and passes provided querystring + /// + /// + /// + /// + protected RedirectToUmbracoPageResult RedirectToUmbracoPage(Guid key, string queryString) + { + return new RedirectToUmbracoPageResult(key, queryString, Current.UmbracoContextAccessor); + } + /// /// Redirects to the Umbraco page with the given id ///