0

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

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

Что является эквивалентом этого в MVC6?

Update

Это код, который я имел в 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"); 
    } 
} 

Edit:Согласно комментарию

Я не хочу, чтобы включить имя контроллера в URL.I хочет быть 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(); 
    } 
} 

С выше подхода, вы не можете иметь 2 метод действия с тем же именем в приложении (Ex: Вы не можете иметь метод About действий в HomeController и StaticPagesController)

+0

[контроллер] о действии? –

+0

@CoolBreeze да. Чтобы сделать этот метод действий по умолчанию для контроллера. – Shyju

+0

Это не сработало. Я не уверен, что это потому, что у меня есть следующий атрибут на моем контроллере: [Маршрут («[действие]»)] общественного класса StaticPagesController: контроллер –

Смежные вопросы