Learn Asp.Net WebForms or Asp.Net MVC

As most people will say I am sure, it very much depends what you want to learn and the style of development you wish to take on. If you want a lot of control of your page markup and intend to use a lot of AJAX and CSS, then MVC is a better approach, the biggest trade off is you lose the Microsoft controls such as the Gridview and other drag and drop components. MVC is very powerful and extensible framework and learning it will also allow you learn the MVC pattern (which is useful if you ever diversify your skills later on to other development platforms).

However if you are creating lots internal web applications that need to be delivered quickly, then Webforms is certainly a better way to go, it's well documented and mature and the controls allow you build powerful functionality for free. Although you will get basic templates to manipulate data in MVC, it isn't anywhere near as fast a building applications in Webforms.

My personal recommendation is to learn MVC (and it's pattern) as it does not have a big reliance proprietary Microsoft components and makes you think about your application on the front and it's interaction with the back end.

If you want a good example of a big MVC site... you're on it.. stackoverflow run on ASP.NET MVC.

Hope this helps, it is a very general opinion and there is a lot more to both arguments. However from personal experience I think MVC will teach you a lot more reusable standard web technologies in the long run.

Ciao

Jon


Important Update (2019): If you are still wondering whether to use webforms or not; the answer is a categorical no. Have a look at new ASP.NET technologies and stick to .NET Core. Any new project should use .NET Core and C#.


This can be fairly controversial :)

My personal opinion is; stop investing in webforms (it is a broken model for the web) and learn Asp.Net MVC so not only you can produce well design web applications but you can use your knowledge elsewhere on the web. MVC makes you aware of HTTP, HTML and other underlying 'web infrastructure' giving you a better chance for successful results.

So unless you want to make money (again totally personal opinion, take it with a pinch of salt) supporting old installations of webforms (a bit like COBOL - hold you horses webforms fans :) ) I would definitely, strongly suggest Asp.Net MVC ;). Granted I don't know the recent developments on webforms (especially 4.0 ones), so you might want to wait for those as well..

Edit: If you think past winforms experience is going to be an advantage or an argument for using webforms (which is the main selling point for Microsoft developers, I think), you'd be right for about a week and wrong for the rest of the time. In both webforms and winforms you have controls. Similarity ends there. Event model is totally different, threading is completely different, you cant even start comparing rendering and so on. This is actually the main issue with webforms; trying to look like winforms on a totally different architecture.


It's a lot easier to find a job doing WebForms, and MVC doesn't seem to be storming its way into production environments right now. More complex applications are bound to be using MVC today, smaller ones will most likely prefer WebForms, but remember that smaller applications represent the majority of the job market.

Either way it won't hurt to learn both, or at least grasp the WebForms and invest more into MVC (as it will ultimately force you to learn other technologies usually associated with it: nHibernate/Entity, DDD, TDD and so on). Also, you can use a lot of controls in MVC, with little to no tweaking, although the mindset is very different.


A Definite answer to this question is not possible but I can help you take a decision by highlighting you with some facts and key-points of both the technologies.

Web Forms have been there since long so they're much more mature and reliable compared to mvc when it comes to getting things done in time! Even the knowledge base on the web is much larger for web-forms as compared to mvc.

Web forms are much functionally rich and gives you more control on what you want to , how you want to do. Where as MVC has its own beauty of being light-weight application development platform.

If you're a newbie then I'd suggest you go for web-forms first and start looking at mvc in parallel.

stackoverflow.com has been built using asp.net mvc platform.