代码之家  ›  专栏  ›  技术社区  ›  Glenn Slaven

创建仅在操作具有特定操作筛选器时应用路由的路由约束

  •  0
  • Glenn Slaven  · 技术社区  · 15 年前

    我在不同的控制器上有一个操作列表,这些控制器是“管理”功能(创建、更新、删除),但在那些不是“管理”操作的控制器上有其他操作。

    我要做的是创建一个前缀为 /Admin/ 在所有调用具有 Authorize 筛选属性。

    这是否可能?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Nick Berardi    15 年前

    是的,一切皆有可能,但我认为你的意思是说容易吗?答案是否定的,你要做的就是创建你自己的路由,然后将这个定制的路由添加到路由映射中。这并不难,但问题是在控制器之前初始化了路由,因此您必须自己处理查找和反射,以检查您的条件。

    还有一个可选选项,您可以尝试使用actionMethodSelectorAttribute,它允许您为操作方法创建自定义选择器,并忽略不包含authorize属性的选择器。使用这个属性的一个例子是actionverbattribute。

    到目前为止,最简单的方法是为html.actionlink创建一个自定义扩展名,该扩展名进行自己的检查,并将其保持为仅显示的内容,然后为global.asax中的同一个控制器创建双路由。