问题描述
|
我有一个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
这可能吗?这是路由设置吗?
解决方法
您可以编写一个自定义视图引擎。我将为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();
}
}