我有一个由[Project]控制器使用的类.控制器和不同区域的控制器.我怎样才能确定控制器的位置?(我想我可以查看HttpContext.Current.Request的属性 - 但我正在寻找一种"正确的"MVC方式).谢谢.
那是:
[Project].Helpers // called by:
[Project].Controllers
[Project].Areas.[Area].Controllers
// how could I determine the caller from [Project].Helpers?
Run Code Online (Sandbox Code Playgroud)
Lev*_*evi 16
我们故意没有公开从MVC请求获取当前区域名称的方法,因为"area"只是路由的属性.它对其他用途不可靠.特别是,如果您希望控制器具有某些属性(可以考虑抽象术语,而不是System.Attribute类),这些属性可以由助手使用,那么这些属性必须在控制器本身上找到,而不是在区域上.
作为一个实际示例,如果您希望某些逻辑(如操作过滤器)在特定区域中的任何控制器之前运行,则必须直接将操作过滤器与这些控制器相关联.最简单的方法是将一些MyAreaBaseController与该过滤器相关联,然后让逻辑上想要与该区域关联的每个控制器都为该类型的子类化.任何其他用法,例如查看RouteData.DataTokens ["area"]做出决定的全局过滤器,都是不受支持的,并且可能存在危险.
如果您确实需要获取当前区域名称,则可以使用RouteData.DataTokens["area"]它来查找它.
| 归档时间: |
|
| 查看次数: |
6577 次 |
| 最近记录: |