是否可以将URL解析为其复合组件?

时间:2010-03-13 18:02:06

标签: c# asp.net-mvc routing

我想将传入的URL解析为它的组件部分,以便在将其传递到标准MVC路由逻辑之前进行一些预处理。例如,给定您的标准路线

{controller}/{action}/{id}

和网址

/user/show/10

有没有办法让路由系统返回一个包含控制器,动作和id键及其相应值的字典?

3 个答案:

答案 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];