8

File -> New Project for ASP.NET MVC projects used to generate controllers with virtual actions. I'm not sure if that stopped with MVC 2 or MVC 3, but is this no longer a best practice?

kenwarner
  • 28,650
  • 28
  • 130
  • 173
  • Interesting question. I hadn't noticed the change but now that you mention it, that does sound vaguely familiar. – Jedidja Jun 04 '11 at 19:24

3 Answers3

8

T4MVC Does make action methods virtual. If you are using it, it should make action methods virtual, no other way it can work

pdjota
  • 3,163
  • 2
  • 23
  • 33
archil
  • 39,013
  • 7
  • 65
  • 82
  • 1
    yeah, I realized that, too. I have been wondering way though. Should dig into the features of virtual – tugberk Jun 04 '11 at 20:47
  • Making action methods virtual roughly saying is not the feature of asp.net mvc. That's more the c# language feature that T4MVC uses – archil Jun 04 '11 at 21:10
  • this was it. T4MVC added the virtual keyword to any action that didn't already have it. it also made my controllers partial classes – kenwarner Jun 05 '11 at 00:04
3

The current documentation for ASP.NET MVC 3 does not show virtual methods. I'm not really sure what making them virtual would gain you, as I've never subclassed controllers to override actions.

Jedidja
  • 16,610
  • 17
  • 73
  • 112
1

Generated code may be made virtual for various reasons. It's not good practice to make your own code virtual unless required by some tool. See Liskov Substitution Principle and Open/Closed Principle. I think some frameworks do this to facilitate creating proxies but I can't imagine any reason to make all of your methods virtual. To me it screams copy/paste or cargo cult programmer.

Sprague
  • 1,610
  • 10
  • 22