#c# #asp.net #routes #asp.net-mvc-5
Вопрос:
Контроллер
[HttpGet]
[Route("find-a-doctor")]
public ActionResult FindADoctor()
{
ViewData["sList"] = specialities ;
return View();
}
Маршрут.Конфигурация
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "UserPanelFinADoctor", action = "FindADoctor" },
namespaces: new string[] { "xyz.Controllers" }
);
}
Это результат, когда я отлаживаю код. Там написано «Ресурс не может быть найден».
Ответ №1:
Я снова подумал об этом и нашел это в документах microsot.
Действия либо маршрутизируются условно, либо маршрутизируются по атрибутам. Размещение маршрута на контроллере или действие делает его маршрутизируемым атрибутом. Действия, определяющие маршруты атрибутов, не могут быть достигнуты с помощью обычных маршрутов, и наоборот. Любой атрибут маршрута на контроллере перенаправляет все действия в атрибуте контроллера.
Так и в вашем примере .Поскольку вы зарегистрировали маршрут для своего действия в разделе маршрутизация на основе атрибутов. Маршрутизация по соглашению не будет работать. Следует использовать любой из них, а не оба.
Ссылка на статью — https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-5.0#mixed-routing-attribute-routing-vs-conventional-routing