Make ASP.NET MVC 3 Razor View Engine ignore .vbhtml files

后端 未结 7 895
情深已故
情深已故 2020-12-24 09:02

How can I remove the VB Razor Engine or configure the RazorViewEngine to not use and look for .vbhtml files on disk? For new ASP.NET MVC 3 Razor projects, I always remove th

7条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-24 09:48

    A summary from above with a single class.

    Use it like this:

    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new FilteredRazorViewEngine("cshtml"));
    

    Class:

    public class FilteredRazorViewEngine : RazorViewEngine
    {
        private string _extension;
    
        public FilteredRazorViewEngine(string viewTypeExtension)
            : base()
        {
            _extension = viewTypeExtension;
    
            AreaMasterLocationFormats = Filter(base.AreaMasterLocationFormats);
            AreaPartialViewLocationFormats = Filter(base.AreaPartialViewLocationFormats);
            AreaViewLocationFormats = Filter(base.AreaViewLocationFormats);
            FileExtensions = Filter(base.FileExtensions);
            MasterLocationFormats = Filter(base.MasterLocationFormats);
            PartialViewLocationFormats = Filter(base.PartialViewLocationFormats);
            ViewLocationFormats = Filter(base.ViewLocationFormats);
        }
    
        private string[] Filter(string[] source)
        {
            return source.Where(
                s =>
                    s.Contains(_extension)).ToArray();
        }
    }
    

提交回复
热议问题