创建路径约束,该约束仅在操作具有特定操作筛选器时应用路径

时间:2009-05-14 13:32:34

标签: asp.net-mvc routes

我有各种控制器上的操作列表,这些操作是“管理”功能(创建,更新,删除),但是那些非管理操作的控制器上的其他操作。

我想要做的是在所有调用具有/Admin/过滤器属性的操作的网址之前创建一个前缀Authorize的路由。

这甚至可以吗?

1 个答案:

答案 0 :(得分:0)

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

还有一个替代选项,您可以尝试使用ActionMethodSelectorAttribute,它允许您为Action方法创建自定义选择器,并忽略不包含Authorize属性的选择器。使用此属性的一个示例是ActionVerbAttribute。

到目前为止最简单的方法是为Html.ActionLink创建一个自定义扩展,它自己进行检查并将其保留为仅显示内容,然后为Global.asax中的同一控制器创建双重路由。 / p>