2011-05-06 32 views
1

先介绍一下为什么我需要这个。我目前正在创建一个CMS。如果你想象这个CMS有一个PageController,它提供了标准页面需要的所有信息,内容,导航等。MVC:是否可以重写控制器操作?

现在CMS可以为每个使用它的客户端进行修改,并且客户端需要额外/不同的信息我希望覆盖默认的PageController,其中一个专门针对他们的需求量身定制。

这是我曾尝试:

基地控制器

namespace CMS.Core.Controllers { 
    public class PageController : Controller { 
     public virtual ActionResult DisplayHome() { 
      // Logic 
      return View(); 
     } 
    } 
} 

客户特定的控制器

namespace CMS.ClientCore.Controllers { 
    public class PageController : Core.Controllers.PageController { 
     public override ActionResult DisplayHome() { 
      return Content("Client Home"); // Just for testing 
     } 
    } 
} 

路线

routes.MapRouteInLowercase(
    "Home", 
    "", 
    new { controller = "Page", action = "DisplayHome" }, 
    new[] { "CMS.Core.Controllers", "CMS.ClientCore.Controllers" } 
); 

的误差

关于 '页' 的请求已经发现以下的匹配控制器: PCCMS.Core.Controllers.PageController

PCCMS.ClientCore.Controllers.PageController

错误的原因很明显,那么是否有替代方法来覆盖控制器/控制器操作?

回答

2

您正以错误的方式接近问题。

创建一个IContentProvider,供PageController使用,让内容提供者找出当前客户需要的内容。

+0

感谢您的回答。我明白你在说什么,我会重组控制器。 – 2011-05-06 14:49:55

相关问题