2011-05-31 67 views
0

我有一个asp.net MVC3应用程序,我正在使用区域。如何减少MVC区域中的子文件夹数量?

默认情况下,据我所知,设置是这样的:

Areas\ 
    Orders\ 
     Controllers\ 
      HomeController.cs  (Action method: Index) 
      OrderController.cs (Action method: OrderIndex) 
      TransferController.cs (Action method: TransferIndex) 
     Views\ 
      Home\ 
       Index.aspx 
      Order\ 
       OrderIndex.aspx 
      Transfer\ 
       TransferIndex.aspx 

我想这样做的很简单,就是做这样的事情的文件夹数量:

Areas\ 
    Orders\ 
     Controllers\ 
      OrderController.cs (Action method: Index, OrderIndex, TransferIndex) 
     Views\ 
      Index.aspx 
      OrderIndex.aspx 
      TransferIndex.aspx 

这是可能?这是一个路由设置?

回答

2

您可以编写自定义视图引擎。我会提供一个例子剃刀:

public class MyViewEngine : RazorViewEngine 
{ 
    public MyViewEngine() 
    { 
     base.AreaViewLocationFormats = base.AreaViewLocationFormats.Union(new[] 
     { 
      "~/Areas/{2}/Views/{1}{0}.cshtml"  
     }).ToArray(); 
    } 
} 

,然后在Application_Start注册该视图引擎:

ViewEngines.Engines.Add(new MyViewEngine()); 

,这就是几乎所有你会需要实现你在找什么。

如果您正在使用的WebForms当然查看发动机轻微的调整是必要的:

public class MyViewEngine : WebFormViewEngine 
{ 
    public MyViewEngine() 
    { 
     base.AreaViewLocationFormats = base.AreaViewLocationFormats.Union(new[] 
     { 
      "~/Areas/{2}/Views/{1}{0}.aspx" 
     }).ToArray(); 
    } 
} 
+0

谢谢。我将不得不更多地考虑我的架构,并将其作为可行的方式提交。 – Raymond 2011-06-02 18:04:42