- Fixing OrchardControllerFactory.GetAreaName to align it with what MVC 2 does internally.

--HG--
branch : dev
This commit is contained in:
Suha Can
2010-03-01 11:20:52 -08:00
parent 62902e2b38
commit 4487940e60

View File

@@ -1,4 +1,3 @@
using System;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Routing; using System.Web.Routing;
using Autofac; using Autofac;
@@ -27,14 +26,29 @@ namespace Orchard.Mvc {
return base.CreateController(requestContext, controllerName); return base.CreateController(requestContext, controllerName);
} }
private string GetAreaName(RouteData context) { public static string GetAreaName(RouteBase route) {
object area; var routeWithArea = route as IRouteWithArea;
if (context.Values.TryGetValue("area", out area)) { if (routeWithArea != null) {
return Convert.ToString(area); return routeWithArea.Area;
} }
var castRoute = route as Route;
if (castRoute != null && castRoute.DataTokens != null) {
return castRoute.DataTokens["area"] as string;
}
return null; return null;
} }
public static string GetAreaName(RouteData routeData) {
object area;
if (routeData.DataTokens.TryGetValue("area", out area)) {
return area as string;
}
return GetAreaName(routeData.Route);
}
public static IContainer GetRequestContainer(RouteData routeData) { public static IContainer GetRequestContainer(RouteData routeData) {
object dataTokenValue; object dataTokenValue;
if (routeData != null && if (routeData != null &&