시나리오 : ASP.NET MVC 5 사이트에 Forms 영역이 있습니다.속성 라우팅이 영역에서 작동하지 않습니다.
새로운 속성 라우팅 기능을 사용하여 정의한 맞춤 경로를 사용하는 세부 정보 작업으로 리디렉션하려고합니다.
RedirectToAction :
return RedirectToAction("Details", new { slug });
내가로 리디렉션 해요 조치 :
[HttpGet]
[Route("forms/{slug}")]
public ActionResult Details(string slug)
{
var form = FormRepository.Get(slug);
...
return View(model);
}
내가 http://localhost/forms/my-slug
에 리디렉션을 기대하는 대신 앱을 http://localhost/Forms/Details?slug=my-slug
에 나를 리디렉션됩니다.
이것은 속성 라우팅이 작동하지 않는다는 것을 의미합니다.
어떻게 해결할 수 있습니까?
routes.MapMvcAttributeRoutes()를 추가했습니다. 내 RouteConfig에 라인 :
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
그리고 여기 내 위해 Application_Start()이다 : 당신은 아마 속성 라우팅 규칙 기반 라우팅을 결합하는
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
박쥐! MVC 5.1에서이 어리석은 변화를 알아 내려고 거의 4 시간을 소비 한 후에는 내 문제를 한 번에 해결할 수 있습니다. – Korayem
시간이 지남에 제 질문 + 답변이 많은 사람들을 도왔습니다. –
이것은 나를 위해 일했습니다 .. 단순히 작동하지 않을 것이므로 지역 경로 속성을 버렸습니다. 그러나 routes.MapMvcAttributeRoutes() 다음에 AreaRegistration.RegisterAllAreas()를 이동 한 후에 마술처럼 트릭을 수행했습니다! –