1
我在我的应用程序中定义了以下两条路由。强制控制器的mvc路由
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 }
);
第一条路线将被捕获的URL像
- EN-GB/11111 /目标/目录
- EN-GB/11111 /目标/编辑/ 2
第二条路线是默认路线,将用于这样的事情
- EN-GN /帐号/登录
- 等
我是我,我想以武力只被调用,如果他们通过applicationRoutes途径来某些控制器的问题。
例如我想确保目标控制器与routedata内的用户标识一起调用。
我知道我可以检查每个控制器的动作,如果用户标识键存在与路由数据中的值。但是这对我来说并不高雅。
我也可以更具体介绍一下路线,做这样的事情:
routes.MapRoute(
"ApplicationRoutes",
"{language}-{country}/{userid}/Targets/{action}/{id}",
new { language="en" , country="gb", controller="targets", id = UrlParameter.Optional }
);
,但这不会直接停止请求EN-GB /目标/目录/无需提供用户ID值。
处理这个问题的最佳方法是什么?
太好了。如果有一个控制器需要使用这个功能,那就完美了,但是可以说我拥有许多需要使用用户控制器的控制器。我可以按照您的指示为每个控制器实施特定的路线,但是是否有更优雅的解决方案来为每个控制器创建路线? – Kramer00
对不起,我忘记了那里的控制器限制。您可以保持控制器变量不变。 –
即使有限制,当然这不会阻止我进入/ en-gb/Targets/List,而不使用路由中的用户标识符,因为默认路由会处理这个问题。我想要确保在目标控制器上调用的每个操作都包含routedata中的用户标识。 – Kramer00