Asp.net MVC 3中修改views 目录{转,增}

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" };
}

 

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;
    }
}

 

3. 在需要修改View路径的方法内调用如下代码:

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new WebFormViewEngine());

 

如果没有调用ViewEngines.Engines.Clear();将会多个路径共存。
如果需要自定义配置路径,只需要将自定义的类中的路径从配置文件或者数据库中读取即可。
posted @ 2011-12-12 09:33  AnswerCard  阅读(321)  评论(0编辑  收藏  举报