asp.net mvc 3-如何减少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();
    }
}

相关内容

  • 没有找到相关文章

最新更新