Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Mvc中重写操作方法_C#_Asp.net Mvc - Fatal编程技术网

C# 如何在Mvc中重写操作方法

C# 如何在Mvc中重写操作方法,c#,asp.net-mvc,C#,Asp.net Mvc,我正在使用用于Mvc的Cms。此Cms具有以下控制器: public class OrderController : Controller { public ActionResult Index() { return View(); } } 对于定制需求,我希望覆盖此控制器的行为,并在用户访问同一URL时返回不同的内容。实现这一结果的最佳方法是什么 我尝试继承Cms控制器并将ActionResult设置为覆盖,回答如下: 但这不起作用。当我尝试导航“管理

我正在使用用于Mvc的Cms。此Cms具有以下控制器:

public class OrderController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}
对于定制需求,我希望覆盖此控制器的行为,并在用户访问同一URL时返回不同的内容。实现这一结果的最佳方法是什么

我尝试继承Cms控制器并将ActionResult设置为覆盖,回答如下:

但这不起作用。当我尝试导航“管理/订单”时,我仍然输入Cms控制器/操作

有什么建议吗


注意:我尝试覆盖的控制器位于另一个程序集中,并且操作设置为虚拟。它位于一个区域内,因此路由在区域注册内配置。

您的请求需要使用OrderController而不是电子商务OrderController,请查看您的

我认为这是一个路由问题。如果路线仍然指向原始路线,则覆盖控制器并不重要。如果您希望URL调用您的操作,您需要添加一个优先级高于当前解析为原始路由的路由。

我正在使用Cms for Mvc
-有大量Cms平台可使用Mvc,并且可以自定义,更不用说它也可以自行开发。如果不知道您要使用哪一个并提供定制,没有人能够回答这个问题。请提供您正在使用的平台以及您如何尝试连接到该平台。实际上,我正在构建Cms本身,因此我可以根据需要更改代码。我正在寻找一种简洁的方法来实现开发人员能够覆盖的控制器,下一个问题<代码>但这不起作用-在我看来,它可能真的起作用了。重写代码没有定义新视图,它返回的结果与它重写的方法相同,该方法将生成相同的视图。要测试此操作,请在覆盖代码中设置断点,或使用字符串参数
视图(“其他”)返回不同的视图如果没有父级上的
虚拟
,您也不能使用关键字
覆盖
。最后,你必须考虑到路由,你是如何定义路由的,这样你就可以点击你的新控制器了?是的,我简化了我粘贴在这里的代码,实际的代码做了一些不同的事情。我还尝试了一个断点:它不会被击中。我在父级中使用了virtual。最后我提到了路由,您的路由配置可能没有设置为命中控制器,或者您使用的URL没有指向它。确保你的路由配置正确。所以,说得清楚一点,你的意思是把最重要的东西完全放在一边。。。只需创建一个不同的控制器和操作,以使用自定义路由指向它,对吗?是的。路由控制调用哪个控制器和操作。
public class OrderController : Cms.Areas.Admin.Controllers.OrderController
{
    public override ActionResult Index(Guid orderItemId)
    {
        // Do extra stuff

        return View();
    }
}