在针对路径数据验证会话数据时,请使用IRouteConstraint或ActionFilterAttribute

时间:2011-02-22 22:09:52

标签: asp.net-mvc constraints routes actionfilterattribute

我最近一直在实施RouteConstraint,其职责是将自定义路由值与会话中的某些模型数据进行匹配。

我发现对于IncomingRequest的routeDirection,会话为空。

  1. 直到是否配置了会话 控制器是 创建/初始化?
  2. 如果是这种情况,就是这种类型 功能更适合过滤器 应用于控制器级别?
  3. 还有其他可行的选择吗?
  4. 遗憾的是,除了在第一个条目上配置会话时,需要在每个路由上应用此验证,因此我认为路由约束将是最佳解决方案。

    感谢。

2 个答案:

答案 0 :(得分:1)

由于必须在每次调用时发生,我可能会处理控制器(或基本控制器)OnActionExecuting,然后设置ActionExecutingContext.Result以返回一个新的RedirectToRouteResult,其中包含一个包含所需值的RouteValueDictionary。这也可以封装在ActionFilter中(控制器实现IActionFilter)。

答案 1 :(得分:1)

我不清楚你究竟想要实现什么(重定向到登录页面或呈现一些消息)所以我不能给出任何好的替代解决方案,但我可以告诉你,当IRouteConstraint正在进行时会话无法访问评估,因为路由管道在加载会话之前发生。例如。路由可能会呈现完全不需要会话的页面。