Asp.net mvc 3 如何减少MVC区域中的子文件夹数量?
我有一个asp.net MVC3应用程序,我正在使用区域 默认情况下,我理解设置如下所示:Asp.net mvc 3 如何减少MVC区域中的子文件夹数量?,asp.net-mvc-3,routes,directory,areas,Asp.net Mvc 3,Routes,Directory,Areas,我有一个asp.net MVC3应用程序,我正在使用区域 默认情况下,我理解设置如下所示: Areas\ Orders\ Controllers\ HomeController.cs (Action method: Index) OrderController.cs (Action method: OrderIndex) TransferController.cs (Action method: T
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
我想做的是简单地计算文件夹的数量,以便执行以下操作:
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
这可能吗?这是路由设置吗?您可以编写自定义视图引擎。我将提供Razor的一个示例:
public class MyViewEngine : RazorViewEngine
{
public MyViewEngine()
{
base.AreaViewLocationFormats = base.AreaViewLocationFormats.Union(new[]
{
"~/Areas/{2}/Views/{1}{0}.cshtml"
}).ToArray();
}
}
然后在应用程序\u 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();
}
}
非常感谢。我将不得不对我的体系结构进行更多的思考,并将此作为一种可行的方式归档。