Как установить маршрут по умолчанию в MVC6 при использовании атрибутов?

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

[Маршрут ("{действие} = индекс")]

Что эквивалентно этому в MVC6?

Обновить

Это код, который я имел в MVC5

    [Route("{action=index}")]
    public class StaticPagesController : Controller
    {
        public ActionResult About()
        {
           return View();
        }

        public ActionResult Contact()
        {
           return View();
        }

        public ActionResult Index()
        {
           return View();
        }
    }

Я не смог понять, как сделать эквивалент в MVC6, но я смог получить ту же функциональность, работая с использованием следующего:

    [Route("[action]")]
    public class StaticPagesController : Controller
    {
        public ActionResult About()
        {
           return View();
        }

        public ActionResult Contact()
        {
           return View();
        }

        [Route("/[action]")]
        [Route("/")]
        public ActionResult Index()
        {
           return View();
        }
    }

1 ответ

Вы можете украсить свой конкретный метод действия, который вы хотите использовать в качестве действия по умолчанию Route приписать и передать [controller] в качестве шаблона маршрута к этому. Так что в любое время вы получите запрос на yoursite/yourcontrollerвходящий запрос будет перенаправлен на этот конкретный метод действия.

public class SettingsController : Controller
{      
    public IActionResult Index()
    {
        return View();
    }

    [Route("[controller]")]
    public IActionResult OtherIndex()
    {
        return Content("This will be the response for mySite/Settings request");
    }
}

Редактировать: согласно комментарию

Я не хочу включать имя контроллера в URL. Я хочу, чтобы это было domain.com/About, а не domain.com/StaticPages/About

Используя атрибутную маршрутизацию, вы можете украсить свой метод действия с помощью Route приписать и дать [action] как имя шаблона.

public class StaticPagesController : Controller
{      
    [Route("[action]")]
    public IActionResult About()
    {
        // This action method will be executed for "yourSite/About" request
        return View();
    }
}

При вышеописанном подходе в вашем приложении не может быть двух методов действия с одинаковым именем (например, вы не можете иметь About метод действия в HomeController а также StaticPagesController)

Другие вопросы по тегам