【发布时间】:2012-04-07 19:49:21
【问题描述】:
可能重复:
How do I register a controller that has been created in an AREA
我有一个问题 - 可以做下一个吗?
我有三个领域:
_Default
SiteOne
SiteTwo
在每个区域内,我都有一个同名的 ApiController,但当然在不同的命名空间中:
MvcAppliaction.Areas._Default.Controllers.ValuesController
MvcAppliaction.Areas.SiteOne.Controllers.ValuesController
MvcAppliaction.Areas.SiteTwo.Controllers.ValuesController
我在配置中还有一个当前(我想使用的)区域的值。
如果用户在浏览器中输入,我想将用户映射到适当区域中的控制器(我可以在配置中找到):
/api/values
例如,如果配置文件中的当前区域是 SiteOne,那么这个请求应该映射到 MvcAppliaction.Areas.SiteOne.Controllers.ValuesController 控制器,但是如果我将配置文件中的当前区域更改为 _Default 的 SiteTwo,它应该映射到正确的控制器。
附言。使用 MVC 控制器很容易,您只需设置路由:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MvcApplication.Web.Areas." + SiteName + ".Controllers") }
);
【问题讨论】:
标签: c# asp.net-web-api asp.net-mvc-areas asp.net-web-api-routing