我正在使用MVC 5中的属性路由,但我开始注意到一个痛点。我的情况是,我想要子类化控制器,因为所有的操作都将执行相同的操作。然而,显然我需要为子类的操作使用不同的路由。目前,我正在做类似于以下的事情:
public class FooController : Controller
{
[Route("foo", Name = "Foo")]
public virtual ActionResult Foo()
{
...
return View();
}
}
public class BarController : FooController
{
[Route("bar", Name = "Bar")]
public override ActionResult Foo()
{
return base.Foo();
}
}
这对我来说似乎很糟糕。我不会重复实际操作方法的代码(在某些情况下,这可能相当多),但这让我感觉不对劲。此外,在基本操作方法定义因某些原因更改的情况下,这将成为一种维护上的噩梦。是否有一些我没有注意到的通用方法来更改属性而不必覆盖方法?也许是某些特定于属性路由的方法。还是我只是运气不好?