我在我的应用程序中定义了以下两条路线。
routes.MapRoute(
"ApplicationRoutes",
"{language}-{country}/{userid}/{controller}/{action}/{id}",
new { language="en" , country="gb", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default",
"{language}-{country}/{controller}/{action}/{id}",
new { language = "en", country = "gb", id = UrlParameter.Optional }
);
第一条路线将捕获像这样的网址
- zh-CN/11111/目标/列表
- zh-CN/11111/目标/编辑/2
第二条路线是默认路线,将用于这样的事情
- 英文/帐户/登录
- ETC
我的问题是我有某些控制器,如果它们是通过 applicationRoutes 路由来的,我想强制它们被调用。
例如,我想确保使用路由数据中的用户 ID 调用目标控制器。
我知道我可以在每个控制器操作中检查用户 ID 键是否存在,并且在路由数据中具有值。但这对我来说似乎并不优雅。
我也可以更具体地了解路线并执行以下操作:
routes.MapRoute(
"ApplicationRoutes",
"{language}-{country}/{userid}/Targets/{action}/{id}",
new { language="en" , country="gb", controller="targets", id = UrlParameter.Optional }
);
但这不会在不提供用户 ID 值的情况下直接停止对 en-gb/Targets/List/ 的请求。
处理这个问题的最佳方法是什么?