Могу ли я переопределить действие по умолчанию для одного контроллера в ASP.Net Core MVC - PullRequest
0 голосов
/ 25 мая 2018

Можно ли переопределить действие по умолчанию для одного контроллера, не затрагивая остальную часть маршрутизации?В настоящее время у меня есть маршрут по умолчанию

routes.MapRoute(
    name: "Default",
    template: "{controller}/{action}",
    defaults: new { controller = "Book", action = "Index" }
);

Это работает в общем случае, но теперь я хочу добавить AdminController, но я хочу, чтобы действие по умолчанию для AdminController было Users, а не Index.

Я действительно не хочу использовать атрибутную маршрутизацию на этом контроллере, поскольку мы можем позже обновить маршрутизацию по умолчанию, и я хочу сохранить как можно больше централизованной и СУХОЙ.Я просто хочу, чтобы URL-адреса / Admin и / Admin / Users направлялись к действию Users на этом одном контроллере.

В настоящее время я использую ASP.Net Core 2.0 с намерением перейти на 2.1, как тольковыпущен.В настоящее время он работает на .Net Framework, но мы хотим обновить его до .Net Core, как только мы сможем избавиться от некоторых зависимостей, которые у нас есть в настоящее время на платформе (маловероятно, чтобы это было в первом выпуске).

Любые предложения

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Хотя это более интенсивно, чем при использовании атрибутной маршрутизации, вы можете

routes.MapRoute( 
    name: "AdminDefault", 
    template: "Admin/{action}", 
    defaults: new { controller = "Admin", action = "Users" }
);

routes.MapRoute(
    name: "Default",
    template: "{controller=Book}/{action=Index}",        
);

с использованием маршрутизации атрибутов на контроллере это было бы

[Route("[controller]")]
public class AdminController : Controller {    
    [HttpGet]
    [Route("")]             //Match GET admin
    [Route("[action]")]     //Match Get admin/users
    public IActionResult Users() {
        return View();    
    }    
}

Или даже

[Route("[controller]/{action=Users}")]
public class AdminController : Controller {    
    [HttpGet]
    public IActionResult Users() {
        return View();    
    }    
}

Ссылка Маршрутизация к действиям контроллера в ASP.NET Core

0 голосов
/ 25 мая 2018

Пожалуйста, проверьте ниже код:

rout.MapRoute (имя: "Admin", шаблон: "{controller} / {action}", значения по умолчанию: new {controller = "Admin", action = "Users"});

...