我有一个asp.net MVC3应用程序,我正在使用Areas。
默认情况下,我了解设置如下:
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
这可能吗?这是路由设置吗?
答案 0 :(得分:2)
您可以编写自定义视图引擎。我将用Razor提供一个例子:
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();
}
}