我有一个使用此方法的sitecore应用程序:
@Html.Sitecore().ViewRendering("Path to the View")
@Html.Sitecore().Controller("Controller Name", "Controller Action")这是非常好的工作,即使不需要我创建一个项目,为该渲染在Sitecore。
那么,与简单的ASP.MVC方法相比,该方法有什么区别:
@Html.Partial("Path to the View")
@Html.Action("Controller Name", "Controller Action")两个都一样吗?我在这里有点困惑
发布于 2016-05-03 10:46:00
@Html.Sitecore().ViewRendering("Path to the View") 将触发mvc.renderRendering管道。如果将视图添加到占位符中,则视图将以几乎相同的方式呈现。与Html.Partial不同的是在处理视图的周期中。如果依赖于管道中的某些内容(如前面提到的@Gatogordo所述的缓存),则呈现的结果可能有所不同。(或者如果您自己在那里添加了一些处理器)。如果希望呈现相同,如果通过占位符添加它们,则使用Html.Sitecore().ViewRendering
为
@Html.Sitecore().Controller("Controller Name", "Controller Action")和
@Html.Action("Controller Name", "Controller Action")不同之处还在于它的执行生命周期。Sitecore是通过ControllerRunner执行的,它从SitecoreControllerFactory中获取Controller并执行一些操作。ASP.Net MVC操作是通过HttpContext.Server.Execute执行的,实际上也是这样做的。但是从实现的角度来看,我可以假设一个不同之处是路由。在使用ASP.Net MVC助手的情况下,您的路由值可以将您带到某些Sitecore项,而不是需要的控制器操作(如果匹配的话)。Sitecore助手将始终执行控制器。
如果需要更多细节,可以在反射器中打开System.Web.Mvc.Html.ChildActionExtensions.Action和Sitecore.Mvc.Helpers.SitecoreHelper.Controller,并逐步比较它们。
发布于 2016-05-03 08:19:46
两者是相似的,但并不完全相同。来自Sitecore助手的那些将为普通的mvc (例如,增加缓存的可能性)添加一些Sitecore风格,但也会对性能造成(小的)影响。
这是一个需要作出的选择,这取决于你的渲染和上下文。
https://stackoverflow.com/questions/36996267
复制相似问题