MVC - Ne peut pas résoudre la vue (les contrôleurs et les vues dans des projets séparés)

J'ai une Solution avec 4 projets:

  • AS.Core.Common (références: Données, Web)
  • AS.Core.Controllers (références: Commune, de Données, Web)
  • AS.Core.Data
  • AS.Core.Web (références: les Données)

Dans mes contrôleurs, n'importe où que je reviens vue:

retour à la Vue("~/Views/Home/Index.cshtml");

Il est mis en évidence en rouge et je reçois un "Cannot resolve view '~/Views/Home/Index.cshtml'".

Tous les quatre projets de construire avec succès mais quand j'appuie sur la touche F5 je reçois le texte suivant:

Erreur de serveur dans l'Application'/'.

La ressource ne peut pas être trouvé.

Description: HTTP 404. La ressource que vous recherchez (ou l'un de ses
dépendances) peut avoir été supprimée, que son nom ait changé ou est
temporairement indisponible. Veuillez consulter l'URL suivante et de faire
assurez-vous qu'il est correctement orthographié.

URL demandée: /

Informations De Version: Microsoft .NET Framework Version:4.0.30319;
ASP.NET Version:4.0.30319.17929

Comment puis-je obtenir mon contrôleurs de voir mon point de vue ils résolvent correctement? Je suppose que c'est pourquoi je reçois la réponse 404.

Mon Global.asax.cs ressemble à:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        //Register the default hubs route: ~/signalr
        RouteTable.Routes.MapHubs();

        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

Mon RouteConfig.cs (j'ai ajouté des espaces de noms, mais il semble avoir pas aidé)

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        namespaces: new[] { "AS.Core.Controllers" },
        defaults: new 
        {
            controller = "Home", 
            action = "Index", 
            id = UrlParameter.Optional
        });
}

C'est mon HomeController.cs

public class HomeController : Controller
{
    public ActionResult Index()
    {
        //return View("~/Views/Home/Index.cshtml");
        return View();
    }
 }
Le problème n'est probablement PAS sur la recherche de la vue. Ne trouvant pas le point de vue, rendre une autre erreur plus spécifique, pas une erreur 404. Votre erreur est probablement lié au routage. Comment est la table de routage mondiale.asax?
J'ai ajouté mon routage à mon post original.
Désolé de ne pas assez clair 🙂 ce qui est dans les RouteConfig.RegisterRoutes(RouteTable.Itinéraires) de la méthode.
Je suppose que vous n'avez pas de contrôleur HomeController.cs contenant une classe nommée contrôleur HomeController avec une méthode nommée Index() ??
Juste vu (dans d'autres commentaires) que vos contrôleurs est dans un autre projet, non? Vous devriez ajouter les espaces de noms: new string[]{"YourControllerProjsNameSpace"} dans votre MapRoute() .

OriginalL'auteur Mithrilhall | 2013-06-05