diff --git a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeByIdRouteHandler.cs b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeByIdRouteHandler.cs
index cd50705cc8..94cd71673b 100644
--- a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeByIdRouteHandler.cs
+++ b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeByIdRouteHandler.cs
@@ -3,11 +3,11 @@ using Umbraco.Core.Models;
namespace Umbraco.Web.Mvc
{
- public abstract class UmbracoVirtualNodeByIdRouteHandler : UmbracoVirtualNodeRouteHandler
+ public class UmbracoVirtualNodeByIdRouteHandler : UmbracoVirtualNodeRouteHandler
{
private readonly int _realNodeId;
- protected UmbracoVirtualNodeByIdRouteHandler(int realNodeId)
+ public UmbracoVirtualNodeByIdRouteHandler(int realNodeId)
{
_realNodeId = realNodeId;
}
@@ -20,6 +20,9 @@ namespace Umbraco.Web.Mvc
return FindContent(requestContext, umbracoContext, byId);
}
- protected abstract IPublishedContent FindContent(RequestContext requestContext, UmbracoContext umbracoContext, IPublishedContent baseContent);
+ protected virtual IPublishedContent FindContent(RequestContext requestContext, UmbracoContext umbracoContext, IPublishedContent baseContent)
+ {
+ return baseContent;
+ }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs
index f8cd1f6006..a5c97a9651 100644
--- a/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs
+++ b/src/Umbraco.Web/Mvc/UmbracoVirtualNodeRouteHandler.cs
@@ -1,4 +1,6 @@
-using System.Web;
+using System.Globalization;
+using System.Linq;
+using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Umbraco.Core.Models;
@@ -42,6 +44,13 @@ namespace Umbraco.Web.Mvc
protected virtual void PreparePublishedContentRequest(PublishedContentRequest publishedContentRequest)
{
+ //need to set the culture for this to work
+ if (publishedContentRequest.Culture == null)
+ {
+ //none specified so get the default
+ var defaultLanguage = global::umbraco.cms.businesslogic.language.Language.GetAllAsList().FirstOrDefault();
+ publishedContentRequest.Culture = defaultLanguage == null ? CultureInfo.CurrentUICulture : new CultureInfo(defaultLanguage.CultureAlias);
+ }
}
}
}
diff --git a/src/Umbraco.Web/RouteCollectionExtensions.cs b/src/Umbraco.Web/RouteCollectionExtensions.cs
index 1d94eaef61..586ecf6476 100644
--- a/src/Umbraco.Web/RouteCollectionExtensions.cs
+++ b/src/Umbraco.Web/RouteCollectionExtensions.cs
@@ -4,11 +4,30 @@ using System.Linq;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Http;
+using Umbraco.Web.Mvc;
namespace Umbraco.Web
{
- internal static class RouteCollectionExtensions
+ public static class RouteCollectionExtensions
{
+ ///
+ /// Maps an Umbraco route with an UmbracoVirtualNodeRouteHandler
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Route MapUmbracoRoute(this RouteCollection routes, string name, string url, object defaults, UmbracoVirtualNodeRouteHandler virtualNodeHandler, object constraints = null, string[] namespaces = null)
+ {
+ var route = routes.MapRoute(name, url, defaults, constraints, namespaces);
+ route.RouteHandler = virtualNodeHandler;
+ return route;
+ }
+
///
/// Routes a webapi controller with namespaces
///