2011-02-22 37 views
2

我一直在實施RouteConstraint最近的責任是將自定義路由值與會話中的某些模型數據進行匹配。根據路由數據驗證會話數據時使用IRouteConstraint或ActionFilterAttribute

我發現的是,對於IncomingRequest的routeDirection,會話爲空。

  1. 沒有配置會話,直到 控制器 創建/初始化?
  2. 如果是這種情況,這種類型的 函數更適合應用於控制器級別的過濾器 ?
  3. 還有其他可行的選擇嗎?

它的遺憾之處在於這個驗證確實需要應用於每一個路由,除了在第一個入口上配置會話時,所以我認爲路由約束是最好的解決方案。

謝謝。

回答

1

由於它必須在每次調用時發生,我可能會處理控制器的(或基本控制器的)OnActionExecuting,然後設置ActionExecutingContext.Result以返回包含所需值的RouteValueDictionary的新RedirectToRouteResult。這也可以封裝在ActionFilter中(控制器實現IActionFilter)。

1

我不清楚你到底想要實現什麼(重定向到登錄頁面或呈現一些消息),所以我不能給出任何好的替代解決方案,但我可以告訴你,當IRouteConstraint是正在評估,因爲路由管道發生在會話加載之前。例如。路由可能會呈現完全不需要會話的頁面。