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.
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.
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");
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).
return view("viewName")
dans la méthode.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 .
2. Cliquez sur Ajouter une vue .. et donnez le nom approprié. Dans cet exemple, le nom doit être Index.
Ensuite, il ajoutera une vue correcte en créant avec la structure de dossiers appropriée.
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 }
);
}
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.
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.
index()
depuis votre contrôleurgoto 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.
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.
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é.
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.
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
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
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.
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)