【发布时间】:2012-07-04 08:14:38
【问题描述】:
我有一个 BaseController 类,我的所有控制器都从该类继承。它有一个重写的 ExecuteCore 方法,该方法执行(几乎)所有控制器及其操作所需的一些初始设置。
protected override void ExecuteCore()
{
SetUpMethod1();
SetUpMethod2();
base.ExecuteCore();
}
protected virtual void SetUpMethod1()
{
//some initialization stuff
}
protected virtual void SetUpMethod2()
{
//some other initialization stuff
}
在某些控制器需要一些不同的行为的情况下,很容易覆盖控制器中的相关方法,并且效果很好。但是,来自不同控制器的某些操作在设置方法中需要一些不同的行为。
我想出了
protected virtual void SetUpMethod1()
{
string controller = (string)ControllerContext.RouteData.Values["controller"]);
string action = (string)ControllerContext.RouteData.Values["action"]);
if (controller/account combination is in a list)
//special setup
else
//regular setup
}
我无法摆脱我做错了什么的感觉。有没有更好/正确的方法来获得这种行为?
【问题讨论】:
-
你的系统有授权吗?
-
@alok_dida:是的,授权不是问题。
标签: c# .net asp.net-mvc asp.net-mvc-3