SubControllers are MVC Controllers that are also parameters to your action methods. Incorporating their use in large systems allows for composition, dependency inversion, and separation of concerns.
Sometimes we want Controller actions to pass objects into SubControllers so that the SubControllers can do interesting things with them.
For example, in a Product Controller we have the [...]
Microsoft wants you to think of a web page as an action, but it's really a collection of subcontrollers.
Mahendra Mavani is one of the very talented software engineers working at Headspring and he knows all the obscure Resharper shortcuts (serious geek cred).
Coding is an indulgent, wasteful activity. Design is best done away from the keyboard. [...]
ASP.NET MVC Preview 5 dropped a few days ago and I upgraded my apps today. Just a few minor notes on the process, which was painless. Most changes are covered in the release notes.
RenderUserControl is now RenderPartial
Asserting that Controller.View() was called now looks like:
Assert.That(viewResult.ViewName, Is.EqualTo(string.Empty));
Some HtmlHelper changes. Some are great but the behavior of the [...]
After reviewing Rob Conery's post, a few notes:
Syntax (no <%=):
<% Html.RenderAction<PersonComponentController>(c=>c.List()); %>
The component does not share ViewData with the er, "calling view"..
You can use a View User Control (ascx) or a View Page (aspx).
By default the component is browsable. You can turn this off using IgnoreRoute:
routes.IgnoreRoute("PersonComponent/{action}");
On the implicit MVC violations, Phil says:
My personal opinion [...]
Eilon was correct - they made it easier!
It's trivial to test TempData now. This is all that's needed to port the example from his earlier post to Preview 4 (thanks Ben):
[TestFixture]
public class HomeControllerTests
{
[Test]
public void IndexSavesUserIDToTempDataAndRedirects()
{
var [...]