web-dev-qa-db-fra.com

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 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.

55
Fitzchak Yitzchaki

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

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

4
Fitzchak Yitzchaki

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");
51
Shannon Deminick

Cette erreur a été générée car le nom de votre méthode de contrôleur n'est pas le même que le nom de la vue.

Si vous faites un clic droit sur la méthode de votre contrôleur et sélectionnez Aller à la vue (Ctrl + M, Ctrl + G), il ouvrira une vue (succès) ou se plaindra de ne pas en trouver une (ce que vous voyez).

  1. Les noms des contrôleurs et des dossiers View correspondants ont le même nom.
  2. Les pages correspondantes du contrôleur et des méthodes doivent avoir les mêmes noms.
  3. Si le nom de votre méthode est différent du nom de la vue, return view("viewName") dans la méthode.
28
Sai Sherlekar

Le fichier Global.asax contient l’URL Route . La route d’URL par défaut est la suivante.

"{controller}/{action}/{id}"

Alors, essayez ceci.

1. Cliquez avec le bouton droit de la souris sur la méthode de votre contrôleur comme ci-dessous.

Exemple: appelons la méthode Index().Cliquez à droite dessus .  enter image description here

2. Cliquez sur Ajouter une vue .. et donnez le nom approprié. Dans cet exemple, le nom doit être Index.

 enter image description here

Ensuite, il ajoutera une vue correcte en créant avec la structure de dossiers appropriée.

14
Elshan

Vérifiez le code généré sur MyArea AreaRegistration.cs et assurez-vous que le paramètre controller 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 à dossier de zone

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

Lorsque cette erreur se produit uniquement lors du déploiement sur un serveur Web, le problème peut être dû au fait que les vues ne sont pas déployées correctement.

Cela peut par exemple se produire si l'action de génération pour les vues est définie sur Aucune plutôt que sur Contenu.

Un moyen de vérifier que les vues sont correctement déployées consiste à accéder au chemin physique du site sur le serveur Web et à vérifier que les vues sont présentes.

5
Scott Munro

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 oeil ce post par Phil Haack.

3
Çağdaş Tekin
  1. clic droit dans la méthode index() depuis votre contrôleur
  2. puis cliquez sur goto view 

si cette action ouvre index.cshtml?

Votre problème est que le pool IIS n’est pas autorisé à accéder au chemin physique de la vue.

vous pouvez le tester en donnant votre permission. Par exemple: - allez dans c:\inetpub\wwwroot\yourweb puis faites un clic droit sur votre dossier Web -> propriété -> sécurité et ajoutez le nom du groupe à tout le monde et donnez le contrôle total à votre site espérons que cela résoudra votre problème. 

2
Beruk Berhane

C’est toujours un problème dans la version finale… .quand vous créez la zone à partir du menu contextuel/Ajouter/Zone, visual studio n’ajoutez pas le contrôleur dans le dernier argument de la méthode MapRoute. Vous devez en prendre soin, et dans mon cas, je dois le mettre manuellement à chaque fois que je crée une nouvelle zone.

1
Michael Castro

J'ai eu ce problème aujourd'hui avec un simple projet prêt à l'emploi VS 2013 MVC 5 déployé manuellement sur mon instance locale de IIS sous Windows 8. Il s'est avéré que le pool d'applications utilisé n'avait pas le bon accès application (dossiers, etc.). Après avoir réinitialisé l'identité de mon pool d'applications, cela a bien fonctionné.

1
Greg Grater

Si vous pouvez obtenir cette erreur même si toutes les cartes MapRoutes correctes sont enregistrées dans votre région et si toutes les autres configurations de base sont correctes.

Voici la situation:

J'ai utilisé le code mentionné ci-dessous à partir du fichier Jquery pour publier des données, puis charger une vue depuis la méthode d'action du contrôleur.

$.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'}); 

Au-dessus du code jQuery, je n'ai pas mentionné la fonction de rappel de succès . Ce qui s'est passé après la fin d'un scénario de post-retour sur la méthode d'action, sans acheminement vers ma vue attendue, est revenu du côté de Jquery et n'a pas rendu la vue erreur trouvée comme ci-dessus.

Ensuite, j’ai donné une solution comme ci-dessous et son fonctionnement sans problème.

 $.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'},
      function (data) {
 var url = Sys.Url.route('PetDetail', { action: "ReturnRetailOnlySalesItems", controller: "Customers",petKey: '<%: Model.PetKey %>'});
 window.location = url;});   

Remarque: J'ai envoyé ma demande dans la fonction de rappel de réussite à la méthode d'action de mes vues attendues. Le moteur de vue a ensuite trouvé le fichier de vue d'une zone pertinente et s'est chargé correctement.

0
Sampath

Vous pouvez obtenir cette erreur même avec tous les MapRoutes corrects dans votre enregistrement de zone. Essayez d’ajouter cette ligne à l’action de votre contrôleur:

If Not ControllerContext.RouteData.DataTokens.ContainsKey("area") Then
    ControllerContext.RouteData.DataTokens.Add("area", "MyAreaName")
End If
0

J'ai eu le même problème ici, et devinez quoi .... en regardant la structure xml 'de csproj, j'ai remarqué que le nœud Content (à l'intérieur du nœud ItemGroup) était aussi "aucun" ... je ne sais pas pourquoi mais recevait la même erreur, vient de modifier cela en "Contenu" comme les autres, et ça marche.

J'espère que cela pourra aider

0
MGE

Cette erreur peut également apparaître si votre programme d'installation MSI n'a pas réussi à déployer le fichier.

Dans mon cas, cela est dû au fait que j'ai converti les fichiers .aspx en fichiers .cshtml et que Visual Studio a pensé qu'il s'agissait de nouveaux fichiers et défini l'action de génération sur none plutôt que sur le contenu.

0
micahhoover

J'ai eu ce problème aussi; J'ai remarqué que je n'avais pas inclus la page d'affichage dans le dossier dont le nom est identique à celui du contrôleur.

Contrôleur: adminController View-> Admin-> view1.cshtml

(C'était View-> view1.cshtml) (il n'y avait pas de dossier: Admin)

0
freewill