如何解决如何减少MVC区域中的子文件夹数量?
| 我有一个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();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。