2016-01-04 51 views
0

我正在使用iFrame作爲我的Sitecore模板之一的字段類型。在iFrame字段的源字段中,我提到了到我的Controller操作的路由。Sitecore MVC模板中的iframe字段未加載

的FieldType:的IFrame
來源:/mvc/modules/products/getList

而在routeconfig.cs文件I配置爲

 routes.MapRoute(
      "SitecoreModulesDefault", 
      "/mvc/modules/{controller}/{action}", 
      new { controller = "products", action = "getList" } 
     ); 

路線然後,我創建上面的模板類型的內容項。當我檢查的IFRAME場,我看到控制器沒有被調用,我看到的錯誤爲請求的文件未找到與下面的附加信息:

請求的URL:/ MVC /模塊/產品/的GetList
用戶名:Sitecore的\ ADMIN
站點名稱:網站上的路線

一些如何不重定向到控制器中的操作。還有其他配置嗎?或者我在某處做錯了什麼?提前致謝!

注意:我正在使用Sitecore 8.1與MVC。另外,我不能在這裏使用.aspx文件而不是控制器。

回答

0

它看起來像Sitecore是拿起Url並處理它,但因爲你沒有該Url的Sitecore項目設置它會給你一個404錯誤。

你有2種選擇:

  1. 您的網址添加到IgnoreUrlPrefixes設置:

<setting name="IgnoreUrlPrefixes" value="/mvc/modules/|... all original values ..."/>

  • 創建你需要匹配的項目Url爲IFrame並設置其上的演示文稿以使用您的控制器操作作爲控制器渲染
  • 這兩個選項都有優點和缺點。對於選項1,缺點是您不需要使用Sitecore上下文,根據您的代碼,這可能是也可能不是問題。另一方面,你不能通過在內容編輯器中搞亂某些東西來「打破」IFrame內容。

    選項2具有它的工作原理像其他Sitecore的頁面的優勢,你可以利用Sitecore的輸出緩存的幫助性能,並更改演示是基於代碼不具備的。不利的一面是,你將依賴於一個項目結構,所以你必須確保安全設置正確,以防止不必要的更改。總體而言,我認爲對於呈現的Html輸出,選項2通常是我喜歡這樣做的方式,因爲它爲您提供了更多的靈活性。但是這兩種選擇都很好。

    如果你選擇1,這篇文章給出了一個替代方式修補忽略列表:http://www.awareweb.com/awareblog/12-14-15-patchableignorelist