MVC is a framework methodology that divides an application’s implementation into three component roles: models, views, and controllers. “Models” in a MVC based application are the components of the application that are responsible for maintaining state. Often this state is persisted inside a database (for example: we might have a Product class that is used to represent order data from the Products table inside SQL). “Views” in a MVC based application are the components responsible for displaying the application’s user interface. Typically this UI is created off of the model data (for example: we might create an Product “Edit” view that surfaces textboxes, dropdowns and checkboxes based on the current state of a Product object). “Controllers” in a MVC based application are the components responsible for handling end user interaction, manipulating the model, and ultimately choosing a view to render to display UI. In a MVC application the view is only about displaying information – it is the controller that handles and responds to user input and interaction.
Yes, it is possible to combine ASP.NET webforms and ASP.MVC and develop a single web application.
Model: Model represents the application data domain. In short the applications business logic is contained with in the model.
It is difficult to unit test UI with webforms, whereas views in mvc can be very easily unit tested.
Razor view engine is a new view engine created with ASP.Net MVC model using specially designed Razor parser to render the HTML out of dynamic server side code. It allows us to write Compact, Expressive, Clean and Fluid code with new syntaxes to include server side code in to HTML.
Yes, all the features in an asp.net MVC application are interface based and hence mocking is much easier. So, we don't have to run the controllers in an ASP.NET process for unit testing.
The following are just a few return types of a controller action method. In general an action method can return an instance of a any class that derives from ActionResult class.