2012-08-08 6 views
0

ASP.NET MVC 3 라우팅이 나를 혼란스럽게합니다. 내가 할 수있는 모든 것을 읽은 것처럼 느껴지지만 때로는 아직 이해가 안 간다. 나는 내가 그 URL이 특정의 아이에 대한 내용을로드하는 HTML보기를 표시 할 ASP.NET MVC 3 라우팅 구조

/authorized/home/children/{childID} 

처럼 그 모습 방문 할 수있는 URL을 만들려고하고 있습니다.

:

AuthorizedController.cs에서
routes.MapRoute(
    "Child", // Route name 
    "{controller}/Home/Children/{action}/{id}", 
    new { controller = "Authorized", action = "Child", id = UrlParameter.Optional } 
); 

, 나는 다음과 같습니다 내 global.asax.cs 파일에서

/Views/Authorized/Home/Children/Child.cshtml 

, 나는 다음과 같은 경로를 추가 한 다음과 같이 내보기 정의

public ActionResult Child(string id) 
{ 
    return View("~/Views/Authorized/Home/Children/Child.cshtml"); 
} 

내가/authorized/home/children을 방문하면 Child.cshtml의 내용을 볼 수 있습니다. 그러나, 내가/authorized/home/children/1을 방문하면 404가됩니다.

내가 뭘 잘못하고 있니? 고맙습니다.

+2

정의한 유일한 경로입니까? 그렇지 않으면 나머지 노선을 게시 할 수 있습니까? – JTMon

+0

다른 모든 경로는 문제를 격리하기 위해 주석 처리되었습니다. 위에 등록 된 경로 만 정의 된 유일한 경로입니다. – user70192

답변

2

공유하는 경로가 내가 원하는 경로와 일치하지 않습니다. 당신이 경로를 예상하고있어,

/authorized/home/children/{childID} 

:하지만

/Authorized/Home/Children/{action}/{id} 

참고 거기에 추가 작업 매개 변수

당신은 할 수 있습니다. 어린이는 귀하의 컨트롤러에서 귀하의 행동입니까, 아니면 자녀입니까? 이 아이들이 만약 당신이 당신의 경로를 업데이트해야합니다 :

routes.MapRoute(
    "Child", // Route name 
    "{controller}/Home/{action}/{id}", 
    new { controller = "Authorized", action = "Children", id = UrlParameter.Optional } 
); 

을하지만, 당신이이 같은 경로에서 {동작}을 제거해야합니다 자녀의 경우 :

routes.MapRoute(
    "Child", // Route name 
    "{controller}/Home/Children/{id}", 
    new { controller = "Authorized", action = "Child", id = UrlParameter.Optional } 
); 

이가 만들 것이 명시 적 경로, 아동 행동 지시.

+0

죄송합니다. 내가 열어 본 두 번째 프로젝트에서 잘못된 코드를 복사했습니다. 이후 내 게시물을 업데이트했습니다. – user70192

+0

문제 없음, 업데이트했습니다 –

+0

@Mark Oreta가 제공 한 두 번째 경로가 문제를 해결합니까? 그것이해야하는 것처럼 보였기 때문에. – JTMon