Asp.net mvc ASP.NET MVC-我可以将单词组合成路由吗?

Asp.net mvc ASP.NET MVC-我可以将单词组合成路由吗?,asp.net-mvc,asp.net-mvc-routing,dry,single-responsibility-principle,Asp.net Mvc,Asp.net Mvc Routing,Dry,Single Responsibility Principle,我有一个ASP.NETMVC站点,可以处理汽车、carpart和非HTTP动词。就像这样: /Honda/Engine/Build /Honda/Wheel/Move /Honda/Door/Rotate /Ford/Engine/Move /Ford/Wheel/Rotate /Ford/Door/Build /Delorean/Engine/Rotate /Delorean/Wheel/Build /Delorean/Door/Move And so on ... 每辆车都会处理不同于其他

我有一个ASP.NETMVC站点,可以处理汽车、carpart和非HTTP动词。就像这样:

/Honda/Engine/Build
/Honda/Wheel/Move
/Honda/Door/Rotate
/Ford/Engine/Move
/Ford/Wheel/Rotate
/Ford/Door/Build
/Delorean/Engine/Rotate
/Delorean/Wheel/Build
/Delorean/Door/Move
And so on ...
每辆车都会处理不同于其他车的部件和动词——不共享方法。我的控制器可能如下所示:

public class HondaController : Controller
{
    public ActionResult BuildEngine()
    { ... }  
    public ActionResult MoveEngine()
    { ... } 
    public ActionResult RotateEngine()
    { ... } 
    public ActionResult BuildWheel()
    { ... }  
    public ActionResult MoveWheel()
    { ... } 
    public ActionResult RotateWheel()
    { ... } 
    public ActionResult BuildDoor()
    { ... }  
    public ActionResult MoveDoor()
    { ... } 
    public ActionResult RotateDoor()
    { ... }
}
Ford控制器和Delorean控制器的情况完全相同

我的问题是: 如何将CarPart和动词组合成一个名为“VerbCarPart”的MVC动作


我可以通过创建九条路线来使用蛮力,但这会破坏SRP。什么是优雅的解决方案?

您在问题顶部列出的模式可以通过一个控制器方法和一条路线实现。或者,您可以使用三种控制器方法完成此操作,但仍有一条路由。当您可以简单地将零件传递给Rotate()或将动作传递给Wheel()时,为什么需要多个控制器方法?@RobertHarvey我可以这样做;你说得对。事实上,我已经在这么做了。但这两种选择似乎都不优雅。我只是想知道你是否能设计出将单词组合成{action}的路线。你也许能。我不会的。它们应该分开存放。