1. RazorViewEngine 的构造函数
public RazorViewEngine(IViewPageActivator viewPageActivator) :
base(viewPageActivator)
{
base.AreaViewLocationFormats = new string[] { " ~/Areas/{2}/Views/{1}/{0}.cshtml ", " ~/Areas/{2}/Views/{1}/{0}.vbhtml ", " ~/Areas/{2}/Views/Shared/{0}.cshtml ", " ~/Areas/{2}/Views/Shared/{0}.vbhtml " };
base.AreaMasterLocationFormats = new string[] { " ~/Areas/{2}/Views/{1}/{0}.cshtml ", " ~/Areas/{2}/Views/{1}/{0}.vbhtml ", " ~/Areas/{2}/Views/Shared/{0}.cshtml ", " ~/Areas/{2}/Views/Shared/{0}.vbhtml " };
base.AreaPartialViewLocationFormats = new string[] { " ~/Areas/{2}/Views/{1}/{0}.cshtml ", " ~/Areas/{2}/Views/{1}/{0}.vbhtml ", " ~/Areas/{2}/Views/Shared/{0}.cshtml ", " ~/Areas/{2}/Views/Shared/{0}.vbhtml " };
base.ViewLocationFormats = new string[] { " ~/Views/{1}/{0}.cshtml ", " ~/Views/{1}/{0}.vbhtml ", " ~/Views/Shared/{0}.cshtml ", " ~/Views/Shared/{0}.vbhtml " };
base.MasterLocationFormats = new string[] { " ~/Views/{1}/{0}.cshtml ", " ~/Views/{1}/{0}.vbhtml ", " ~/Views/Shared/{0}.cshtml ", " ~/Views/Shared/{0}.vbhtml " };
base.PartialViewLocationFormats = new string[] { " ~/Views/{1}/{0}.cshtml ", " ~/Views/{1}/{0}.vbhtml ", " ~/Views/Shared/{0}.cshtml ", " ~/Views/Shared/{0}.vbhtml " };
base.FileExtensions = new string[] { " cshtml ", " vbhtml " };
}
{
base.AreaViewLocationFormats = new string[] { " ~/Areas/{2}/Views/{1}/{0}.cshtml ", " ~/Areas/{2}/Views/{1}/{0}.vbhtml ", " ~/Areas/{2}/Views/Shared/{0}.cshtml ", " ~/Areas/{2}/Views/Shared/{0}.vbhtml " };
base.AreaMasterLocationFormats = new string[] { " ~/Areas/{2}/Views/{1}/{0}.cshtml ", " ~/Areas/{2}/Views/{1}/{0}.vbhtml ", " ~/Areas/{2}/Views/Shared/{0}.cshtml ", " ~/Areas/{2}/Views/Shared/{0}.vbhtml " };
base.AreaPartialViewLocationFormats = new string[] { " ~/Areas/{2}/Views/{1}/{0}.cshtml ", " ~/Areas/{2}/Views/{1}/{0}.vbhtml ", " ~/Areas/{2}/Views/Shared/{0}.cshtml ", " ~/Areas/{2}/Views/Shared/{0}.vbhtml " };
base.ViewLocationFormats = new string[] { " ~/Views/{1}/{0}.cshtml ", " ~/Views/{1}/{0}.vbhtml ", " ~/Views/Shared/{0}.cshtml ", " ~/Views/Shared/{0}.vbhtml " };
base.MasterLocationFormats = new string[] { " ~/Views/{1}/{0}.cshtml ", " ~/Views/{1}/{0}.vbhtml ", " ~/Views/Shared/{0}.cshtml ", " ~/Views/Shared/{0}.vbhtml " };
base.PartialViewLocationFormats = new string[] { " ~/Views/{1}/{0}.cshtml ", " ~/Views/{1}/{0}.vbhtml ", " ~/Views/Shared/{0}.cshtml ", " ~/Views/Shared/{0}.vbhtml " };
base.FileExtensions = new string[] { " cshtml ", " vbhtml " };
}
2. 继承RazorViewEngine修改类定义
public
class TestViewEngine : RazorViewEngine
{
public TestViewEngine()
{
MasterLocationFormats = new[] {
" ~/TestViews/{1}/{0}.master ",
" ~/TestViews/Shared/{0}.master "
};
ViewLocationFormats = new[] {
" ~/TestViews/{1}/{0}.cshtml ",
" ~/TestViews/{1}/{0}.cshtml ",
" ~/TestViews/Shared/{0}.cshtml ",
" ~/TestViews/Shared/{0}.cshtml "
};
PartialViewLocationFormats = ViewLocationFormats;
MasterLocationFormats = MasterLocationFormats;
}
}
{
public TestViewEngine()
{
MasterLocationFormats = new[] {
" ~/TestViews/{1}/{0}.master ",
" ~/TestViews/Shared/{0}.master "
};
ViewLocationFormats = new[] {
" ~/TestViews/{1}/{0}.cshtml ",
" ~/TestViews/{1}/{0}.cshtml ",
" ~/TestViews/Shared/{0}.cshtml ",
" ~/TestViews/Shared/{0}.cshtml "
};
PartialViewLocationFormats = ViewLocationFormats;
MasterLocationFormats = MasterLocationFormats;
}
}
3. 在需要修改View路径的方法内调用如下代码:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add( new WebFormViewEngine());
ViewEngines.Engines.Add( new WebFormViewEngine());
如果没有调用ViewEngines.Engines.Clear();将会多个路径共存。
如果需要自定义配置路径,只需要将自定义的类中的路径从配置文件或者数据库中读取即可。