开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜