Can I change the search order for the physical views of an ASP.Net MVC 3 application
I noticed Asp.net MVC 3 searches for .aspx files before .cshtml files. Can I chan开发者_StackOverflow中文版ge this search order? And how to do this?
Background information
When debugging I got the following exception:
The view 'Reset' or its master was not found. The following locations were searched:
~/Views/Demo/Reset.aspx
~/Views/Demo/Reset.ascx
~/Views/Shared/Reset.aspx
~/Views/Shared/Reset.ascx
~/Views/Demo/Reset.cshtml
~/Views/Demo/Reset.vbhtml
~/Views/Shared/Reset.cshtml
~/Views/Shared/Reset.vbhtml
I conclude from this, that the old .aspx views are searched for first.
Since I converted my site to MVC3, and all views to Razor, I would like the .cshtml files to be searched first. I think this would be better for performance.
Yes. Change the order of the existing view engines..
But in a non-debug configuration, file locations are cached, so it will only help on the first lookup. I wouldn't sweat it.
Thanks to the answer of Craig Stuntz I found the syntax I was looking for:
I added this to my Application_Start
in Global.asax.cs
:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
// ViewEngines.Engines.Add(new WebFormViewEngine()); <-- uncomment if needed
This clears the registered ViewEngines, and adds them in the order I want.
精彩评论