59 votes

La vue 'Index' ou son maître n'a pas été trouvée.

 The view 'Index' or its master was not found. The following locations were searched:
~/Views/ControllerName/Index.aspx
~/Views/ControllerName/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
 

J'ai eu cette erreur lors de l'utilisation de ASP.Net mvc area. L'action du contrôleur de zone est invoquée, mais elle semble rechercher la vue dans les vues de projet "de base" plutôt que dans le dossier des vues de zone.

53voto

Shannon Deminick Points 331

Ce que vous devez faire est de définir un jeton avec le nom de votre zone:

par exemple:

 context.MapRoute(
        "SomeArea_default",
        "SomeArea/{controller}/{action}/{id}",
        new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
    ).DataTokens.Add("area", "YOURAREANAME");
 

29voto

Sai Sherlekar Points 484

Cette erreur a été soulevée parce que votre Contrôleur nom de la méthode n'est pas la même que la Vue de son nom.

Si vous cliquez droit sur votre méthode de contrôleur et sélectionnez Aller À la Vue (Ctrl+M Ctrl+G), il va ouvrir une Vue (succès) ou de se plaindre qu'il ne pouvait pas en trouver un (ce que vous voyez).

  1. Correspondant de Contrôleurs et d'Afficher le nom des dossiers ayant le même nom.
  2. Contrôleur correspondant méthodes et points de Vue des pages devrait même avoir le même nom.
  3. Si votre nom de la méthode est différente de celle de nom de la vue, return view("viewName") dans la méthode.

10voto

Raphael Points 2579

Vérifiez le code généré dans * MyArea * AreaRegistration.cs et assurez-vous que le paramètre du contrôleur est défini sur votre contrôleur par défaut. Sinon, le contrôleur sera appelé bot pour une raison quelconque, ASP.NET MVC ne recherchera pas les vues dans le dossier area.

 public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "SomeArea_default",
            "SomeArea/{controller}/{action}/{id}",
            new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
        );
    }
 

4voto

Fitzchak Yitzchaki Points 4896

Le problème était que j'ai utilisé MvcRoute.MappUrl de MvcContrib pour acheminer le context.Routes .

Il semble que le mappeur de routage MvcContrib était mal à l'aise avec le routage de zone.

3voto

çağdaş Points 10552

Vous n'avez probablement pas créé votre propre moteur de vue.
Le moteur de visualisation par défaut recherche les vues dans ~/Views/[Controller]/ et ~/Views/Shared/ .

Vous devez créer votre propre moteur de vue pour vous assurer que les vues sont recherchées dans le dossier Vues de zone.

Jetez un coup d'œil à ce billet de Phil Haack.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X