【问题标题】:Use a IRouteConstraint or ActionFilterAttribute when validating session data against route data根据路由数据验证会话数据时使用 IRouteConstraint 或 ActionFilterAttribute
【发布时间】:2011-02-22 22:09:51
【问题描述】:

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

我发现 IncomingRequest 的 routeDirection 的会话为空。

  1. 会话是否在直到 控制器是 创建/初始化?
  2. 如果是这种情况,这种类型的 更适合过滤器的功能 在控制器级别应用?
  3. 还有其他可行的选择吗?

遗憾的是,除了在第一次进入时配置会话时,确实需要在每个路由上应用此验证,所以我认为路由约束将是最好的解决方案。

谢谢。

【问题讨论】:

    标签: asp.net-mvc constraints routes actionfilterattribute


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-16
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多