您可以創建一個從DefaultControllerFactory
派生並覆蓋GetControllerInstance
一個新的控制器工廠。我不知道你是如何執行客戶檢查,但它可能是這個樣子:
public class CustomControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == typeof(DefaultProductController))
{
if(// is special customer)
return new SpecialProductController();
else
return new DefaultProductController();
}
}
}
你然後通過ControllerBuilder.Current
設置在Global.asax中的Application_Start新的ControllerFactory:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory());
RegisterRoutes(RouteTable.Routes);
}
chris,是這些如果**語句**控制器動作的一部分或嵌入視圖? – 2010-12-09 10:28:30
嘿吉姆。目前作爲控制器的一部分。如果選擇某個產品,則創建發送到視圖的新導航元素。但是控制它們的功能目前是主控制器的一部分,我覺得它們應該是另一個控制器的一部分? – Chris 2010-12-09 10:40:26