我有一个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();
}
}