我想将传入的URL解析为它的组件部分,以便在将其传递到标准MVC路由逻辑之前进行一些预处理。例如,给定您的标准路线
{controller}/{action}/{id}
和网址
/user/show/10
有没有办法让路由系统返回一个包含控制器,动作和id键及其相应值的字典?
答案 0 :(得分:1)
这很简单,路由系统在应用启动时初始化,并根据当前上下文计算路由数据,因此无论何时上下文本身都是最新的,你都很好。
例如,在Global.asax的Application_BeginRequest方法中,您可以获取当前的路径数据:
var routedata = RouteTable.Routes.GetRouteData(new HttpContextWrapper(Context));
routedata又将当前请求的RouteValueDictionary存储在其Values属性中,并且它具有存储在DataTokens属性中的数据标记。
保
答案 1 :(得分:0)
MVC已经为你做了这个。您可以访问控制器内的RouteData属性。
如果您定义了在MVC路由逻辑之前拦截路由数据的位置,我可能会更好地回答。
答案 2 :(得分:0)
您是否尝试在'/'字符上拆分字符串?这将为您提供路径部分的序数数组。
var parts = url.substring(1).Split('/');
var controller = parts[0];
var action = parts[1];
var id = parts[2];