@Html.Sitecore().ViewRendering("Path to the View")
starts the mvc.renderRendering pipeline. And your look will be displayed in much the same way if you add it to the placeholder. The difference from Html.Partial is in the processing loop of your view. The result may differ if you depend on something in this pipeline (for example, caching, as indicated by @Gatogordo). (or if you added some processor there yourself). If you want the rendering to be the same if you add them via placeholder, use Html.Sitecore (). ViewRendering
For
@Html.Sitecore().Controller("Controller Name", "Controller Action")
and
@Html.Action("Controller Name", "Controller Action")
the difference is also in this execution life cycle. Sitecore runs through the ControllerRunner, which receives a controller from SitecoreControllerFactory and performs some actions. The ASP.Net MVC action is executed through HttpContext.Server.Execute and does the same. But looking at the implementation, I can make an assumption that one of the differences is routing. In the case of using the ASP.Net MVC helper, the values โโof your route may lead to some Sitecore element, and not to the required controller action, if it matches. The Sitecore Helper will always execute the controller.
If you need more information, you can open System.Web.Mvc.Html.ChildActionExtensions.Action and Sitecore.Mvc.Helpers.SitecoreHelper.Controller in the reflector and compare them step by step.
Anton source share