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

本文介绍如何通过继承 RazorViewEngine 来自定义视图引擎的路径,包括修改构造函数和视图位置格式等关键步骤。

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();将会多个路径共存。
如果需要自定义配置路径,只需要将自定义的类中的路径从配置文件或者数据库中读取即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值