Интересно.С явным атрибутом маршрута, примененным к действию, это не должно происходить.По сути, кажется, что он возвращается к маршруту по умолчанию.Обычно определение префикса маршрута на уровне контроллера является обычным, поэтому, возможно, это позволит разобраться:
[Route("staff")]
public class StaffController
{
[HttpGet("{id}")]
public async Task<IActionResult> GetStaffMembers(int id)
{
return View("Staff", new StaffViewModel(id));
}
}
В качестве альтернативы, вы можете просто дать вашему маршруту имя и затем явно сослаться на него:
[HttpGet("staff/{id}", Name = "GetStaffMembers")]
Тогда:
<a asp-route="GetStaffMembers" asp-route-id="@Model.Id">...</a>
Последнее, что может быть проблемой, которая как бы связана с первой.Поскольку у вашего контроллера нет явного маршрута, он может не найти правильный маршрут правильно.Создание абсолютного значения может помочь:
[HttpGet("~/staff/{id}")]
По сути, это означает, что этот маршрут должен быть просто /staff/{id}
независимо от того, что еще происходит с маршрутизацией или моим контроллером.