我正在使用Cms作为Mvc。此Cms具有以下控制器:
public class OrderController : Controller
{
public ActionResult Index()
{
return View();
}
}
对于自定义需求,我想覆盖此控制器的行为,并在用户访问相同的URL时返回不同的内容。为了达到这个结果,最好的方法是什么?
我尝试继承Cms控制器并使ActionResult成为覆盖,遵循以下答案:How to override controller actionresult method in mvc3?
public class OrderController : Cms.Areas.Admin.Controllers.OrderController
{
public override ActionResult Index(Guid orderItemId)
{
// Do extra stuff
return View();
}
}
但这不起作用。当我尝试导航“admin / order”时,我仍然进入Cms Controller / Action。
有什么建议吗?
注意:我试图覆盖的控制器在另一个程序集中,操作设置为虚拟。它位于Area中,因此Route在AreaRegistration中配置。
答案 0 :(得分:0)
您的请求需要使用OrderController而不是EcommerceOrderController,请查看您的MVC routes
答案 1 :(得分:0)
在我看来,这是一个路由问题。如果您的路线仍指向原始路线,则覆盖控制器无关紧要。如果您想要一个URL来调用您的操作,您需要添加一个优先级高于当前解析为原始路由的路由。