我有以下问题: 在我的MVC项目中,我有更多具有相同名称但名称空间不同的控制器
到目前为止我唯一的路线是:
var DefaultRoute = routes.MapLocalizedRoute("default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] {"Admin.Controllers"});
DefaultRoute.DataTokens["UseNamespaceFallback"] = true;
默认回退:
ControllerBuilder.Current.DefaultNamespaces.Clear();
ControllerBuilder.Current.DefaultNamespaces.Add("Web.Controllers");
意图尝试始终使用命名空间Admin的控制器,如果控制器尚未实现但位于名称空间Web中,那么请执行此操作。 哪个有效,但问题出在
@HTML.Action("Login","Customer");
显然总是使Web.Controllers忽略原始控制器的命名空间。
我能以某种方式做到这一点吗?
由于
答案 0 :(得分:2)
通过查看您的问题,看起来Web控制器是主控制器(共享),管理控制器位于某个区域内。
要将Html.Action
带到区域内的控制器,您需要明确指定区域名称
喜欢@Html.Action("Login", "Customer", new { area = "Admin" })
。