2014-09-25 13 views
6

Sto imparando il rendering del controller in Sitecore da Here.Il controller per il percorso '/' non è stato trovato o non implementa IController in Sitecore

Ho creato un controller semplice (HelloWorld) e una vista correlata (Index.schtml). Mappato (con Name PageContent) nella sezione di rendering di Sitecore Explorer ... e Aggiungi elemento di rendering in Home Item nella sezione Contenuto di Sitecore Explorer .. Ma quando lo sfoglio, dà l'errore.

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

tutti i post che ho letto sono legati alla Asp .Net MVC ..ma ho problema relativo a Sitecore MVC

Sample.html (contenuto della pagina in Sitecore Explorer rendering Sezione)

@using Sitecore.Mvc 

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

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

</html> 

Solo che questa linea sta dando problema

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

Se rimuovo questa linea ... funziona benissimo un Pagina d alla data Browser spettacolo e tempo

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

    } 
} 

risposta

8

Questo può verificarsi se hai inserito le rotte di default MVC, in quanto la priorità propria implementazione del controller di Sitecore.

Assicurarsi di aver rimosso le seguenti righe da RouteConfig.cs/Global.cs (a seconda della versione MVC);

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

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

Si prega di controllare la versione di System.Web.Mvc.dll a cui fa riferimento il progetto. Forse più tardi della stessa dll in Sitecore nella cartella Website \ Bin. Assicurati che il tuo progetto faccia riferimento alla stessa versione di System.Web.Mvc.dll come quella nella cartella Website \ Bin.

FYI. Esistono due modi per specificare la funzione del controller in ControllerRendering:

  • Solo dal nome del controller. (Si prega di omettere il suffisso "Controller" nel caso )
  • Con il nome completo. Ad esempio "Project.Controllers.HelloWorldController, Project". In questo caso non omettere il suffisso "Controller".
+0

Che cosa è successo qui è stato un po 'di aggiornamento di sicurezza di Microsoft ha aumentato la versione MVC 3 del di 3.0.0.1 . Il sito Web era collegato alla 3.0.0.1 ma le librerie compilate che stavo usando erano ancora vincolate alla 3.0.0.0 e non erano in grado di capire i miei controllori. – Juliano

+0

"Solo dal nome del controller." - Mi prende ogni volta! –

+0

@gerzson dannazione, il downvote è stato completamente involontario, cliccato per sbaglio dopo che alcune schede sono mischiate, scusa ... – Wasp

1

Un'altra cosa che vorrei aggiungere è la seguente. Stavo ricevendo la stessa risposta in Sitecore e poi ho notato la necessità del seguente tipo di oggetto.

Layout -> Controllori -> [Tipo di controllore Voce Riferimento]

Ho creato ogni elemento regolatore per ciascun controller e che sembra di colmare il divario tra il controller di rendering elementi nella struttura dei contenuti sotto rendering e il controller attuale nel codice. Il contenuto di questo elemento del controller fornisce lo spazio dei nomi e la dll in cui è memorizzato il codice del controller e l'azione a cui punta l'azione del controller.

Spero che questo aiuti. Dal momento che l'utilizzo di questi elementi, l'errore è andato via. Nel mio esempio sto usando Sitecore 8.0.

0

Oltre alla risposta di Carlos', ho dovuto anche aggiungere il mio modello in CMS, sotto Models:

enter image description here

Problemi correlati