asp.net-mvc – Sitecore视图渲染和控制器渲染助手

我有一个使用此方法的sitecore应用程序:
@Html.Sitecore().VieWrendering("Path to the View")
@Html.Sitecore().Controller("Controller Name","Controller Action")

即使我没有在Sitecore CMS中为该渲染创建项目,这也完美无缺

那么该方法与简单的ASP MVC方法有什么区别:

@Html.Partial("Path to the View")
@Html.Action("Controller Name","Controller Action")

两者相同与否?我觉得这里有点困惑

解决方法

@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并逐步进行比较.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....