views:

242

answers:

5

What is the difference between a View and a PartialView in ASP.NET MVC?

At first glance the need for both seems non-obvious to me.

+1  A: 

Consider a partialview like a control in webforms, the idea is the partial is reusable

Israfel
+1  A: 

If you come from a webforms background, think of PartialView as a usercontrol.

Pino
+1  A: 

Views are the general result of a page that results in a display. It's the highest level container except the masterpage. While a partial view is for a small piece of content that may be reused on different pages, or multiple times in a page.

If you're coming from webforms, view is similar to a web content form, while a partial view is like a user control.

Tim Hoolihan
+5  A: 

In theory, the answer is: A partial view is a "sub-view" that you embed within a main view - something that you might reuse across multiple views, like a sidebar.

In practice, the answer is: Very little.

In theory, partial views are more lightweight than standard views, but it's perfectly OK to pass a "regular" view to RenderPartial and the performance seems to be exactly the same. I frequently use regular .aspx views as "partial" views because you can make them reference a master view in order to provide templated content like what you can do with UserControls in ASP.NET WebForms. See here.

Partial views are more like web parts on a portal - they are completely self-contained objects. Use them if the layout is simple and static, or if you're annoyed by the Intellisense errors when you don't have the <html> and <body> tags in a standard View.

Aaronaught
how about return View() and return PartialView(), it seems to me that there is no difference at all
Omu
+1  A: 

Look at StackOverflow.com site: Main site (View) contains components like:

  • Tags
  • Related
  • Ad

So Tags, related, Ad etc. can be composed as PartialViews. The advantage of this is that PartialViews can be simply cached by OutputCache instead of recreating all site: performance gain.

dario
But, you could presumably envisage a system that simply enables "Views" to contain "Views", negating the need for an additional type?
Ben Aston
View that contains other Views is very handy. It's depend of you and it's you choice to have one big View or one View as set of smaller Views. All partial views should be independent of others and can have other types as return values.
dario