我可以更改ASP.Net MVC 3应用程序的物理视图的搜索顺序

时间:2010-11-16 20:22:15

标签: asp.net asp.net-mvc-3 razor

我注意到Asp.net MVC 3在.cshtml文件之前搜索.aspx文件。我可以更改此搜索顺序吗?怎么做?

背景资料

调试时我遇到以下异常:

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

我从中得出结论,首先搜索旧的.aspx视图。

由于我将我的网站转换为MVC3,并且所有视图都转换为Razor,我希望首先搜索.cshtml文件。我认为这对性能会更好。

2 个答案:

答案 0 :(得分:5)

是。 Change the order of the existing view engines.

但是在非调试配置中,文件位置会被缓存,因此它只对第一次查找有帮助。我不会出汗。

答案 1 :(得分:4)

感谢the answer of Craig Stuntz我找到了我想要的语法:

我已将其添加到Application_Start中的Global.asax.cs

    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new RazorViewEngine()); 
    // ViewEngines.Engines.Add(new WebFormViewEngine()); <-- uncomment if needed

这将清除已注册的ViewEngines,并按我想要的顺序添加它们。