A Controller
is a normal C# class, so you have to follow the normal rules of inheritance. If you're trying to override a method in the same class, that's nonsense and will not compile.
public class FooController
{
public virtual ActionResult Bar()
{
}
// COMPILER ERROR here, there's nothing to override
public override ActionResult Bar()
{
}
}
If you have subclasses of Foo
, then you can override, if the method on the base class is marked virtual
. (And, if the subclass doesn't override the method, then the method on the base class will get invoked.)
public class FooController
{
public virtual ActionResult Bar()
{
return View();
}
}
public class Foo1Controller : FooController
{
public override ActionResult Bar()
{
return View();
}
}
public class Foo2Controller : FooController
{
}
So it works like this:
Foo1 foo1 = new Foo1();
foo1.Bar(); // here the overridden Bar method in Foo1 gets called
Foo2 foo2 = new Foo2();
foo2.Bar(); // here the base Bar method in Foo gets called
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…