我猜我的问题非常严重,但我找不到任何工作正常的awenser或链接。所以。
关键是,我希望我的网址反映我的文件夹结构。女巫是:
~/Controllers/Admin/
~/Controllers/Supply/
我的routeconfig如下所示:
routes.MapRoute(
name: "Admin",
url: "Admin/{controller}/{action}",
namespaces: new [] {"Web_Intranet.Controllers.Admin"}
);
routes.MapRoute(
name: "Supply",
url: "Supply/{controller}/{action}",
namespaces: new [] {"Web_Intranet.Controllers.Supply"}
);
问题是,如果您在浏览器网址上输入以下内容:
localhost:4342/admin/users/showall
OR
localhost:4342/supply/users/showall
两者都有效!我认为路由会检查您是否通过了有效的“控制器”和“操作”并选择了第一个符合条件的路径。
如果相应的前缀不匹配,如何创建无效的路由配置?
答案 0 :(得分:0)
以下是您应为每个区域添加的配置;
~/Areas/Admin/AdminAreaRegistration.cs
using System.Web.Mvc;
namespace MyApp.Areas.Admin
{
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
确保Route_Name是唯一的