我在 MVC 5 中使用属性路由,但我开始注意到一些痛点。我有一种情况,我想继承一个 Controller ,因为所有的 Action 都会做同样的事情。但是,我显然需要为子类的操作使用不同的路由。现在,我正在做类似于:
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();
}
}
这对我来说太糟糕了。至少我不会重复实际操作方法的代码(在某些情况下会重复很多),但这对我来说感觉不对。此外,在基本操作方法定义由于某种原因发生更改的情况下,这会成为维护方面的噩梦。一般而言,我是否缺少某种方式来更改属性而不必覆盖方法?也许,某些属性路由特定。还是我运气不好?
最佳答案
查看这篇 SO 帖子并回答
Multiple RoutePrefixes per controller using MVC Attribute routing?
然后你可以做这样的事情:
[RoutePrefix("{Type:regex(Foo|Bar)}")]
public class FooController : Controller
{
[Route("foo", Name = "Foo")]
public virtual ActionResult Foo()
{
...
return View();
}
}
关于c# - 有什么方法可以覆盖操作方法的属性而不必覆盖整个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208460/