Как использовать именованные маршруты в ядре asp.net - PullRequest
0 голосов
/ 14 мая 2019

В asp.net core 2.2 типичное веб-приложение, использующее области, контроллеры и представления, содержит следующее:

  • Структура папок Area.

  • Контроллеры, украшенные атрибутом [Area] для связи контроллера с областью

     [Area("Products")]
     public class ProductsController : Controller
     {
     }
    
  • Маршрут области, добавленный к запуску

    app.UseMvc(routes =>
    {
      routes.MapRoute(
        name: "areas",
        template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    
      routes.MapRoute(
         name: "default",
         template: "{controller=Home}/{action=Index}/{id?}");
    });
    

    вышеуказанная конфигурация будет работать для
    ~/products/search
    ~/services/billing ... и т. Д. И для других областей.

Приведенная выше конфигурация маршрутизации охватывает все области.

Так что толку от создания именованных маршрутов. (как ниже), где бы мы это использовали? Разве это не добавляет дополнительных затрат на обновление маршрутов каждый раз, когда вы добавляете / удаляете область?

app.UseMvc(routes =>
{
    routes.MapAreaRoute(
        name: "MyAreaProducts",
        areaName:"Products",
        template: "Products/{controller=Home}/{action=Index}/{id?}");

    routes.MapAreaRoute(
        name: "MyAreaServices",
        areaName: "Services",
        template: "Services/{controller=Home}/{action=Index}/{id?}");

    routes.MapRoute(
       name: "default",
       template: "{controller=Home}/{action=Index}/{id?}");
 });
...