Je suis nouveau au type de projet C # MVC et lorsque j'ai créé un projet Vide C # MVC, j'ai remarqué l'erreur suivante:
public ActionResult Index() { return View(); }
9 Réponses :
MVC recherche des vues (comme index) dans le dossier Views, mais ils doivent également être sous un dossier nommé d'après leur contrôleur (à quelques exceptions près comme partiels).
C'est donc la structure que vous souhaitez suivre Votre projet P>
Controllers (folder) HomeController (.cs) AccountController (.cs) Views (folder) Home (folder) Index (.cshtml) Account (folder) Index (.cshtml)
Le moteur MVC recherche d'une vue sous Shared ou sous le dossier nommé comme le préfixe de votre classe de contrôleur. Donc, si vous avez PS: Dans votre exemple, vous disposez d'un suffixe à votre nom de contrôleur ( abccontroller code> Vous devez avoir votre
index.cshtml code> dans le dossier
vues / abc code>. p>
Controlername CODE>), je ne pense pas que ce soit une bonne pratique, nommez toujours vos contrôleurs
[nom] Controller < / code> p>
Lorsqu'une vue est renvoyée, il s'attend à ce qu'un fichier associé Heureusement, il est facile de remédier à la situation où le fichier de vue manque. Faites un clic droit sur .cshtml code> est dans la même structure de dossier de visualisation que la mise en page du contrôleur pour cette zone (si aucune zone n'est utilisée, il n'y a que 1 Voir le dossier et 1 dossier du contrôleur). Le nom du contrôleur sera le nom du dossier dans le dossier Vues et le nom d'actionResult sera le nom prévu du fichier .CSHTML. P>
index code> pour votre résultat d'action, puis sélectionnez Ajouter une vue. Cliquez sur Ok, et il créera
index.cshtml code> pour vous à l'intérieur du bon dossier. Maintenant, lorsque vous exécutez le projet et accédez à
index code>, c'est ce que vous verrez. P>
Si vous avez déployé manuellement le code dans une instance d'IIS, assurez-vous que l'identité de la piscine d'application utilisée pour cette application dans IIS a des droits aux dossiers de l'application. p>
Un bon moyen de diagnostiquer si c'est quelque chose qui ne va pas avec votre code ou quelque chose de mal avec vos paramètres IIS consiste à l'exécuter dans le débogueur VS 201X. Si cela fonctionne là-bas, mais ne fonctionnera pas directement sous IIS, c'est une bonne chance que la sécurité de l'identité de la piscine des applications soit heurtée. P>
C'était la question que j'avais, merci. J'ai mis à jour l'identité de la pool app pour utiliser le même utilisateur que mon site Web et maintenant cela fonctionne.
Vous pouvez avoir des assemblages d'OLD / Bad ASP.NET dans votre construction. P>
Si vous avez fabriqué sûr em> vous avez votre contrôleur, votre espace de noms et votre nom de nom à la bonne place, il y a de bonnes chances que votre assemblage MVC / ASP a des problèmes de travail avec l'environnement mono actuel. p>
Si vous avez essayé les astuces de copier tous les assemblages .NET, vous pouvez les trouver et les marquer dans votre bac, il y a une bonne chance mono ou sa configuration ne fait pas fusionner correctement - et vous n'avez plus besoin de le faire. .
J'ai eu ce problème lors de la mise à jour d'une machine sur la dernière construction mono. J'ai essuyé ces assemblées de ma corbeille et Nuget'ed les derniers assemblages du dossier Packages MVC Mono MVC. P>
première chose que vous verrez est: p>
Cela résoudra ces problèmes. P>
J'ai eu ce problème quelques fois auparavant et cela peut être l'une des autres réponses, mais cela peut également être l'action de construction qui cause la question. P>
Si vous cliquez avec le bouton droit de la souris sur le fichier .cshtml / .vbhtml que vous avez un problème avec, sélectionnez Propriétés et dans la fenêtre Propriétés, définissez l'action de construction sur Contenu Strort>, alors cela peut être une solution à votre problème. p>
J'ai eu un répertoire virtuel qui ne faisait pas référence correctement au répertoire réel.
(Sous Windows) J'ai corrigé cela en entrant dans IIS (Internet Information Services Manager) et en cliquant avec le bouton droit de la souris sur le répertoire virtuel qui n'a pas été correctement référencé (dans votre cas, Cliquez avec le bouton droit de la souris, puis sélectionnez Cela ne va pas s'appliquer à tous les cas, mais c'est un match possible pour certains cas. P> vues code>).
Les répertoires virtuels auront cette petite icône à côté d'eux: P>
Gérer le répertoire virtuel CODE>>
Paramètres avancés code>. Assurez-vous que le chemin physique correspond à l'endroit où vous pensez aller: p>
Je sais que c'est un ancien poste, mais j'ai couru dans cette même situation en cours d'exécution sur Ubuuntu 16.04 et mono 4.2.1 et rien de tout cela n'a contribué. J'ai commencé à creuser dans d'autres choses et, après une semaine, j'ai découvert que pour une raison quelconque Microsoft.Web.WebPages.Oauth.dll causait cette erreur. Après avoir supprimé cette DLL et supprimer toutes les réfrérences (je n'utilise pas l'autorité d'ouverture de toute façon), tout a commencé immédiatement à travailler même en utilisant une appartenance simple avec MySQL. Je voulais donc publier ceci ici au cas où quelqu'un d'autre circule dans cette même situation sur Mono et Linux, car cela se présente dans Google. P>
Une étape de diagnostic utile consiste à cliquer avec le bouton droit de l'intérieur de l'action du contrôleur, choisissez "Aller à la vue".
Si Visual Studio peut trouver la vue, il est probablement dans le bon dossier, alors vérifiez donc votre URL. Par exemple, si vous utilisez une zone, le nom de la zone doit être dans l'URL: P>
/Area/Controller/Action
Assurez-vous que le fichier existe sur le disque et non à la carte de fichier de Visual Studio. Cela pourrait arriver si vous utilisez le contrôle de la source et d'autres commettre le CSPROJ mais le CSHTML.