2014-09-25 3 views
6

Ich lerne Controller-Rendering in Sitecore von Here.Der Controller für Pfad '/' wurde nicht gefunden oder implementiert IController in Sitecore

Ich habe einen einfachen Controller (HelloWorld) und Related View (Index.schtml) erstellt. Zugeordnete (mit Name PageContent) im Rendering-Bereich von Sitecore Explorer ... und Hinzufügen von Rendering-Element im Home-Element im Inhaltsbereich von Sitecore Explorer .. Aber wenn ich es durchsuche gibt es den Fehler.

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

All Post Ich habe an Asp .net MVC im Zusammenhang ..aber ich habe Problem im Zusammenhang mit Sitecore MVC

sample.html (Seite Inhalt in Sitecore Explorer Rendering Section)

@using Sitecore.Mvc 

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

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

</html> 

Nur diese Zeile Problem

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

schenkt Wenn ich diese Zeile entfernen ... Es funktioniert gut ein d Seite auf Browser zeigt Datum und Uhrzeit

Index.HTML

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

-Controller

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(); 
     } 

    } 
} 

Antwort

8

Dies kann auftreten, wenn Sie die Standard-MVC Routen enthalten sind, wie sie Sitecores eigene Controller-Implementierung überschreiben.

Stellen Sie sicher, dass Sie die folgenden Zeilen aus RouteConfig.cs/Global.cs entfernt haben (abhängig von der MVC-Version).

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

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

Bitte überprüfen Sie die Version von System.Web.Mvc.dll von Ihrem Projekt verwiesen. Es vielleicht später als die gleiche DLL in Sitecore Website \ Bin Ordner. Stellen Sie sicher, dass Ihr Projekt dieselbe Version von System.Web.Mvc.dll als die in dem Website \ Bin-Ordner verweist.

FYI. Es gibt zwei Möglichkeiten, die Controller-Funktion im ControllerRendering zu spezifizieren:

  • Nur durch den Controller-Namen. (Bitte das Suffix "Controller" in in diesem Fall weglassen)
  • Durch den voll qualifizierten Namen. Zum Beispiel "Project.Controllers.HelloWorldController, Project". In diesem Fall sollten Sie das Suffix "Controller" nicht vergessen.
+0

Was einige Sicherheitsupdate von Microsoft ist hier passiert war die MVC 3-Version zu 3.0.0.1 upped . Die Website war an 3.0.0.1 gebunden, aber kompilierte Bibliotheken, die ich verwendete, waren immer noch an 3.0.0.0 gebunden und sie konnten meine Controller nicht verstehen. – Juliano

+0

"Nur durch den Controller-Namen." - erwischt mich jedes Mal! –

+0

@Gerzson verdammt, der Downvote war völlig unfreiwillig, klickte versehentlich nach einigen Tabs schlurfen, sorry ... – Wasp

1

Etwas anderes, das ich hinzufügen möchte, ist das folgende. Ich bekam die gleiche Antwort in Sitecore und dann bemerkte ich die Notwendigkeit für den folgenden Gegenstandstyp.

Layout -> Steuerungen -> [Controller Artikel-Referenztyp]

ich für jeden Controller jede Controller Position angelegt und das scheint die Lücke zwischen dem Controller zu überbrücken Elemente im Inhaltsbaum unter Renderings und die tatsächlichen Controller-Rendering in Code. Der Inhalt dieses Controller-Elements stellt den Namespace und die DLL bereit, in denen der Code des Controllers gespeichert ist, und die Aktion, auf die die Controller-Aktion verweist.

Ich hoffe, das hilft. Seit Verwendung dieser Elemente ist der Fehler verschwunden. Ich benutze übrigens Sitecore 8.0 in meinem Beispiel.

0

Neben Carlos' Antwort, ich hatte auch unter Models mein Modell in CMS, hinzuzufügen:

enter image description here

Verwandte Themen