Although .ViewRendering
and .Controller
will work, there are performance issues with both of those methods.
Both methods will bypass Sitecore's output caching mechanism completely, so every page on your site that calls this will execute all the controllers. This may be the desired result, but most of the time we will want some kind of output caching on the rendering.
Using the code below, allows you to call a view or controller rendering and enable the Sitecore cache:
@Html.Sitecore().Rendering("{guid-to-rendering-item}", new { Cacheble=true, Cache_VaryByData=true })
Notice the explicit caching here and the vary by also.
The area's will be picked up in this case by the value set in the rendering item.
See this post for extra detail: https://cardinalcore.co.uk/2015/05/15/did-you-really-mean-controller-in-sitecore-mvc/