2014-09-25 49 views
6

我正在學習Sitecore中的控制器呈現從Here路徑'/'的控制器未找到或未在Sitecore中實現IController

我創建了一個簡單的控制器(HelloWorld)和相關視圖(Index.schtml)。在Sitecore資源管理器的呈現部分中將其映射(具有名稱PageContent)...並在Sitecore資源管理器的內容部分中的主項目中添加呈現項目。但是,當我瀏覽它時,它會給出錯誤。

The controller for path '/' was not found or does not implement IController. 

所有的帖子我看了都涉及到的ASP.NET MVC ..但我有問題,涉及到Sitecore的MVC

Sample.html(在Sitecore的瀏覽器呈現部分頁面內容)

@using Sitecore.Mvc 

<html> 
<body> 
    @Html.Sitecore().Placeholder("content") 

    <p>Today's date is @DateTime.Now.ToShortDateString()</p> 
</body> 

</html> 

僅此行是給問題

@Html.Sitecore().Placeholder("content") 

如果我刪除此行......它工作正常的在瀏覽器顯示的日期和時間

的Index.html

<p>Hello from Controller -todays Date is @DateTime.Now.ToString()</p> 

控制器d頁

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MVC.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
     // 
     // GET: /HellowWorld/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

    } 
} 

回答

8

,如果你已經包含了默認MVC路線會發生這種情況,因爲它們將覆蓋Sitecore的自己的控制器實現。

確保您從RouteConfig.cs/Global.cs中刪除了以下行(取決於MVC版本);

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
3

請檢查System.Web.Mvc.dll程序您的項目中引用的版本。它可能晚於Sitecore Website \ Bin文件夾中的相同dll。請確保您的項目引用與Website \ Bin文件夾中相同版本的System.Web.Mvc.dll。

僅供參考。有兩種方法可以在ControllerRendering中指定控制器功能:

  • 通過控制器名稱。 (請在此例中省略「控制器」後綴 )
  • 按完全限定名稱。例如 「Project.Controllers.HelloWorldController,Project」。在這種情況下,不要忽略「控制器」後綴。
+0

這裏發生了什麼是微軟的一些安全更新調升MVC 3的版本3.0.0.1 。該網站綁定到3.0.0.1,但我使用的編譯庫仍然綁定到3.0.0.0,他們無法理解我的控制器。 – Juliano 2015-05-20 14:39:45

+0

「只用控制器名稱。」 - 每次都能得到我! – 2016-01-08 18:29:23

+0

@gerzson該死的,downvote是完全不自願的,一些標籤洗牌後錯誤地點擊,抱歉... – Wasp 2017-03-16 15:37:47

1

我還想補充的是以下內容。我在Sitecore中獲得相同的答案,然後我注意到需要以下項目類型。

佈局 - >控制器 - > [控制器項目參考類型]

我創建的每個控制器項目爲每個控制器和似乎彌合控制器渲染效果圖下的內容樹中的項目與實際控制人之間的差距在代碼中。此控制器項目的內容提供控制器代碼存儲位置和控制器操作指向的操作的名稱空間和dll。

我希望這會有所幫助。由於使用這些項目,錯誤已消失。我在我的例子中使用Sitecore 8.0。

0

除了卡洛斯的回答,我也不得不加入CMS我的模型,模型下:

enter image description here

相關問題