Как установить маршрут по умолчанию в 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
)