ASP.NET MVC 라우팅 루트 레벨보기
-
20-08-2019 - |
문제
나는 이것이 매우 쉬울 것이라고 생각했지만 완전히 당황했습니다.
해당 컨트롤러의 하위 디렉토리가 아닌 한 컨트롤러의 뷰가 응용 프로그램의 루트 레벨에 있기를 원하지만 파악할 수는 없습니다.
이 두 URL을 갖고 싶습니다.
/info- 컨트롤러의 "home"에서 "정보"조치를 취해야합니다.
/ admin/ - 이것은 컨트롤러 "admin"의 조치 "색인"(기본값)이어야합니다.
지금까지 내가 시도한 내용에 관계없이 첫 번째 경로는 두 가지를 모두 잡을 것입니다. 나는 둘을 분리 할 수없는 것 같다.
해당 정보 페이지에는 컨트롤러가 필요하지 않습니다. 정적이지만 마스터 페이지를 사용하고 싶습니다. 이것을 끌어내는 훨씬 쉬운 방법이있을 수 있지만, 나는 그것을 알아 차리지 못했습니다.
내가 생각할 수있는 것은 정보 컨트롤러를 만들고보기/홈/정보를보기/정보/색인으로 이동하는 것입니다.
나는 이것을 사용하여 레일로 이것을 할 수 있었다.
map.connect ':controller/:action/:id'
map.connect ':action', :controller => 'home'
다른 팁
경로 속성을 사용할 수 있습니다.
경로 구성 파일에 있어야합니다.
routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
//code below should already be in your route config by default
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
그런 다음 모든 작업 위에 경로 속성을 가질 수 있습니다.
[Route("info")]
매개 변수 및/또는 하위 폴더를 추가하여 이러한 속성으로 더 발전 할 수도 있습니다.
[Route("blog/posts/{postId}")]
위의 속성을 모든 작업에 넣을 수 있으며 블로그 컨트롤러에서 시작되는 것처럼 보입니다. 그러나 블로그 컨트롤러가 필요하지 않습니다. 또한 {}는 매개 변수를 나타냅니다. 따라서 동작이 Curly Braces의 내용과 동일한 매개 변수를 취하고 있는지 확인하십시오. 이 경우 매개 변수는 다음과 같습니다
string postId