Die Ansicht 'Index' oder ihr Master wurde nicht gefunden

7

Ich bin neu im C # MVC-Projekttyp und als ich ein leeres C # MVC-Projekt erstellte, bemerkte ich den folgenden Fehler:

%Vor%

Ich habe die Datei "Index.cshtml" unter dem Ordner "Ansichten". Warum wird die MVC-Engine nicht direkt unter dem Ordner "Views" angezeigt? Wie löse ich dieses Problem?

Meine RouteConfig.cs-Inhalte sind:

%Vor%

Mein Controller Inhalt:

%Vor%     
Bugaboo 08.08.2014, 18:28
quelle

9 Antworten

24

MVC sucht nach Ansichten (wie Index) unter dem Views-Ordner, aber sie müssen sich auch in einem Ordner befinden, der nach ihrem Controller benannt ist (mit einigen Ausnahmen wie Partials).

Dies ist also die Struktur, der Sie in Ihrem Projekt folgen möchten

%Vor%     
Shoe 08.08.2014, 18:33
quelle
18

Ich hatte dieses Problem einige Male zuvor und es kann eine der anderen Antworten sein, aber es kann auch die Build-Aktion sein, die das Problem verursacht.

Wenn Sie mit der rechten Maustaste auf die .cshtml / .vbhtml-Datei klicken, für die Sie ein Problem haben, wählen Sie Eigenschaften, und legen Sie im Eigenschaftenfenster die Build-Aktion auf Inhalt fest, dann kann dies eine Lösung sein zu deinem Problem.

    
John 10.07.2015 15:46
quelle
5

Die MVC-Engine sucht unter Shared oder unter dem Ordner, der wie das Präfix Ihrer Controller-Klasse benannt ist, nach einer Ansicht. Wenn Sie also ABCController haben, müssen Sie Ihre Index.cshtml Sicht unter dem Ordner Views/ABC haben.

PS: In deinem Beispiel hast du ein Suffix für deinen Controllernamen ( ControllerName ), ich denke nicht, dass es eine gute Übung ist, nenne immer deine Controller [Name]Controller

    
TopinFrassi 08.08.2014 18:35
quelle
2

Wenn eine Ansicht zurückgegeben wird, erwartet sie, dass eine verknüpfte .cshtml -Datei in derselben Ansichtsordnerstruktur wie das Controller-Layout für diesen Bereich ist (wenn keine Bereiche verwendet werden, gibt es nur 1 Ansichtsordner und 1 Controller) Mappe). Der Name des Controllers ist der Ordnername im Ordner views und der Name des Actionresult wird der erwartete Name der .cshtml-Datei.

Glücklicherweise gibt es eine einfache Möglichkeit, die Situation zu beheben, in der die Ansichtsdatei fehlt. Klicken Sie mit der rechten Maustaste auf Index für Ihr Aktionsergebnis und wählen Sie dann Ansicht hinzufügen. Klicken Sie auf OK und es wird Index.cshtml für Sie innerhalb des korrekten Ordners erstellt. Wenn Sie nun das Projekt ausführen und zu Index navigieren, sehen Sie das.

    
Travis J 08.08.2014 18:38
quelle
1

Wenn Sie den Code manuell für eine Instanz von IIS bereitgestellt haben, stellen Sie sicher, dass die App Pool-Identität, die für diese Anwendung in IIS verwendet wird, über Rechte für die Ordner in der Anwendung verfügt.

Eine gute Möglichkeit zu diagnostizieren, ob etwas mit Ihrem Code nicht stimmt oder etwas mit den IIS-Einstellungen nicht stimmt, ist die Ausführung im VS 201X-Debugger. Wenn es dort ausgeführt wird, aber nicht direkt unter IIS ausgeführt wird, besteht eine gute Chance, dass die App Pool Identity-Sicherheit aufgebockt ist.

    
Greg Grater 04.11.2014 17:39
quelle
1

Sie haben möglicherweise alte / fehlerhafte ASP.Net-Assemblies in Ihrem Build.

Wenn Sie sicher gemacht haben, haben Sie Ihren Controller, Namespace und View-Namen an der richtigen Stelle, und es besteht eine gute Chance, dass Ihre MVC / ASP-Assembly Probleme mit der aktuellen Mono-Umgebung hat.

Wenn Sie versucht haben, alle .Net-Assemblys zu kopieren, die Sie finden und in Ihre Bin ablegen können, besteht eine gute Chance, dass Mono oder seine Konfiguration nicht korrekt miteinander verschmelzen - und Sie müssen das nicht mehr tun . Ich hatte dieses Problem, als ich eine Maschine auf den neuesten Mono Build upte. Ich habe diese Assemblys aus meinem Bin gelöscht und NuGet die neuesten Assemblys im Ordner Mono MVC Packages geladen.

Das erste, was Sie sehen werden, ist:

  • Microsoft.AspNet.Mvc
  • Microsoft.AspNet.Infrastruktur
  • Microsoft.AspNet.WebPages
  • Microsoft.AspNet.Razor

Dies wird diese Probleme lösen.

    
InquisitionX 03.04.2015 02:16
quelle
1

Ich hatte ein virtuelles Verzeichnis, das nicht korrekt auf das aktuelle Verzeichnis verweist. (Unter Windows) Ich habe dies behoben, indem ich in IIS (Internet Information Services Manager) gegangen bin und mit der rechten Maustaste auf das virtuelle Verzeichnis geklickt habe, das nicht korrekt referenziert wurde (In Ihrem Fall Views ). Virtuelle Verzeichnisse haben dieses kleine Symbol neben ihnen:

Klicken Sie mit der rechten Maustaste und wählen Sie Manage Virtual Directory & gt; %Code%. Stellen Sie sicher, dass der physische Pfad mit dem übereinstimmt, wo er Ihrer Meinung nach gehen sollte:

Dies wird nicht für alle Fälle gelten, aber es ist eine mögliche Übereinstimmung für einige Fälle.

    
Eleanor Zimmermann 15.12.2015 22:23
quelle
1

Ich weiß, dass es sich um einen alten Post handelt, aber ich bin in dieselbe Situation geraten, die auf Ubuuntu 16.04 und Mono 4.2.1 lief und nichts davon half. Ich fing an, in andere Dinge zu graben und nach einer Woche fand ich heraus, dass aus irgendeinem Grund Microsoft.Web.WebPages.OAuth.dll diesen Fehler verursachte. nachdem ich diese dll gelöscht und alle refrens entfernt habe (ich benutze sowieso nicht die open auth), fing alles sofort an zu arbeiten, sogar mit einer einfachen Mitgliedschaft bei MySQL. Also wollte ich das hier posten, falls jemand anders in derselben Situation auf Mono und Linux stößt, weil dies in Google auftaucht.

    
Jacqueline Loriault 09.06.2016 08:19
quelle
0

Ein nützlicher Diagnoseschritt besteht darin, mit der rechten Maustaste in die Aktion des Controllers zu klicken und "Gehe zu Ansicht" auszuwählen.

Wenn Visual Studio die Ansicht finden kann, befindet sie sich wahrscheinlich im richtigen Ordner. Überprüfen Sie Ihre URL also erneut. Wenn Sie beispielsweise einen Bereich verwenden, sollte der Bereichsname in der URL:

stehen %Vor%     
Mark 10.04.2017 14:29
quelle

Tags und Links