我的路线设置如下:
context.MapRoute(
name: "Area",
url: "Area/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard"
}
);
context.MapRoute(
name: "AccountArea",
url: "Area/{accountFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional
}
);
context.MapRoute(
name: "AccountCampaignArea",
url: "Area/{accountFriendlyId}/{campaignFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional,
campaignFriendlyId = RouteParameter.Optional
}
);
而且我有强烈的愿望要Area/friendlyAccountName/Home
带我去,Dashboard()
但这不起作用(404)。我认为原因是我们去寻找一个friendlyAccountName 控制器。
知道如果我应该选择在我的一个控制器崩溃后命名一个帐户,那么如果字符串无法找到相应的控制器,是否有办法进入下一个路由?每次修改控制器列表时,是否有某种方法可以使用反射并避免维护约束?
编辑
您是否知道一种不使用反射或至少包含对该区域的派生类型搜索的方法?我不喜欢在第二个路由参数与控制器名称匹配时产生两次开销的想法(传递约束,然后在构造控制器时再次搜索)。我希望有一种方法可以在构造控制器时捕获异常,然后备份并下降到下一条路线。