What is the purpose, and when should I use a SurfaceController vs RenderMvcController? It seems that there isn't really anything I can do with a SurfaceController I can't do with RenderMvcController. For example, I'm specifically thinking about handling form submission. With RenderMvcController I can do:
public class HomeController : RenderMvcController
{
private IUmbracoMapper _umbracoMapper;
public HomeController()
{
_umbracoMapper = new UmbracoMapper();
}
[HttpGet]
public ActionResult Home()
{
HomeViewModel viewModel = new HomeViewModel();
_umbracoMapper.Map(CurrentPage, viewModel);
return CurrentTemplate(viewModel);
}
[HttpPost]
public ActionResult Home(HomeViewModel viewModel)
{
// Handle form submission
}
}
This seems more in keeping with MVC to me, especially since I can use packages like UmbracoMapper to map the current Umbraco node to a view model and pass that to my View? Why and when should I use a SurfaceController?
If I was so inclined, I could use RenderMvcController to hijack every route for a given node giving me more control over my applciation, a bit more like a pure ASP.NET MVC app. Is this a good thing?