Как уменьшить количество подпапок в областях MVC? - PullRequest
0 голосов
/ 31 мая 2011

У меня есть приложение asp.net MVC3, и я использую Области.

По умолчанию я понимаю, что установка будет выглядеть следующим образом:

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

Возможно ли это?Это настройка маршрутизации?

1 Ответ

2 голосов
/ 31 мая 2011

Вы можете написать собственный движок представления. Я приведу пример с 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();
    }
}
...