将MVC3视图分组到主"action"文件夹下的子文件夹中

Pro*_*ofK 5 asp.net-mvc razor asp.net-mvc-3

例如,我有三个支付控制器,每个支持控制器特定于第三方支付处理器,因此在我的根视图文件夹下,每个控制器都有一个文件夹.我想将这些移动到Views\Payments\Processor1,Views\Payments\Processor2等,而不是当前的Views\Processor1等.

我还没有准备好实现区域,所以我希望有一些方法可以告诉MVC也查看子文件夹,或类似的东西.可以这样做,怎么做?

Dar*_*rov 11

您可以编写自定义视图引擎并覆盖默认视图位置:

public class MyRazorViewEngine : RazorViewEngine
{
    public MyRazorViewEngine() : base()
    {
        base.ViewLocationFormats = base.ViewLocationFormats.Concat(new[] {
            "~/Views/Payments/{1}/{0}.cshtml",
            "~/Views/Payments/{1}/{0}.vbhtml"
        }).ToArray();

        base.PartialViewLocationFormats = base.PartialViewLocationFormats.Concat(new[] {
            "~/Views/Payments/{1}/{0}.cshtml",
            "~/Views/Payments/{1}/{0}.vbhtml"
        }).ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将其注册到Application_Start:

ViewEngines.Engines.Add(new MyRazorViewEngine());
Run Code Online (Sandbox Code Playgroud)