2010-07-29 4 views
8

Jetzt MVC 3 Vorschau 1 hier, können wir Razor (. Cshtml) View Engine verwenden. Wenn eine Ansicht nicht gefunden wird, bekomme ich diesen Fehler:Wäre es sinnvoll, die ASPX/.ascx-Suche zu entfernen, wenn ich sie nicht verwenden möchte?

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

Würde es sich lohnen, die ASPX/ASCX-Lookup zu entfernen, wenn ich nicht planen, sie zu benutzen?

+0

In einem [MVC4 Jump Start video] (http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump -Start/Building-Web-Apps-mit-ASPNET-Jump-Start-02-Building-und-Deploying-Websites-mit-ASPNET-MVC-4), Scott Hanselman sagt, dass Sie eine winzige Verbesserung der Leistung erreichen können, indem Sie dies tun. – DOK

Antwort

17

Ich bezweifle, dass Sie daraus einen spürbaren Leistungsgewinn gewinnen würden. Es ist nur eine Dateiprüfung und wenn es auch von der Engine zwischengespeichert wird, gibt es kaum eine Leistungsverbesserung. Ich würde es Micro-Optimierung nennen!

Ich denke, wenn Sie wissen, dass Sie nicht WebForms verwenden, können Sie es einfach aus der Liste der Ansicht Motoren, wie so entfernen:

ViewEngines.Engines.Clear(); 
ViewEngines.Engines.Add(new RazorViewEngine()); 

Auf diese Weise wird es nicht überprüfen aspx/ascx Dateien.

+2

Ich würde die erste Option empfehlen, da wir (MVC-Team) derzeit keine bestimmte Reihenfolge der View-Engines in dieser Sammlung festlegen. – marcind

+0

@marcin: Es ist wahrscheinlich am besten, die nicht benötigten View Engines zu finden und sie manuell zu entfernen, indem Sie deren Index suchen und entfernen. Auf diese Weise werden, wenn MVC jemals zusätzliche View-Engines hinzufügt (oder andere Komponenten ihre eigenen View-Engines registrieren), diese nicht entfernt. – Eilon

+0

Stimmt, dachte auch darüber nach, aber da er nur Cshtml verwenden wollte, habe ich es nicht hinzugefügt. Konnte ungefähr so ​​aussehen: 'ViewEngines.Engines.Remove (ViewEngines.Engines.OfType (). First());' Lustig, wie viele verschiedene Möglichkeiten Sie dies schreiben können! – aolde

4

Der Kodex wurde überarbeitet:

ViewEngines.Engines.Clear(); 
ViewEngines.Engines.Add(new RazorViewEngine()); 
Verwandte Themen