我的Sitecore MVC项目有一个文件夹结构:
R178 Esc
我正在尝试从代码调用控制器,我正在传递Areas
-- Common
-- Controllers
-- HeaderController
-- Models
-- Views
-- Legal
-- Controllers
-- HeaderController
-- Models
-- Views
,并用适当的命名空间和区域填充它。
PageContent.Current.RequestContext
但它仍然抱怨通常的错误:
if (!String.IsNullOrWhiteSpace(Area))
{
PageContext.Current.RequestContext.RouteData.DataTokens["area"] = this.Area;
}
if (!String.IsNullOrWhiteSpace(AreaNameSpace))
{
PageContext.Current.RequestContext.RouteData.DataTokens["Namespaces"] = this.AreaNameSpace;
}
return ControllerBuilder.Current.GetControllerFactory().CreateController(PageContext.Current.RequestContext, this.ControllerName);
}
我为每个区域设置了路由,并且这些区域都已在routeconfig.cs中的app_start中注册。
可能是什么问题?这甚至可能吗?
答案 0 :(得分:0)
对于我来说,解决方案是在MVC 5中代替使用
PageContext.Current.RequestContext.RouteData.DataTokens["Namespaces"] = this.AreaNameSpace;
您必须将名称空间定义为IEnumerable
PageContext.Current.RequestContext.RouteData.DataTokens["Namespaces"] = new string[] { this.AreaNameSpace };
答案 1 :(得分:-3)
您必须将默认路由配置为:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" },
new[]{"<namespace of you main controller (HeaderContriller)>"}
);
您可以在此处参阅我的文章:http://www.c-sharpcorner.com/UploadFile/56fb14/working-with-routes-in-mvc-framework/