Asp.net-Mvc
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 並逐步比較它們。