2013-03-07 4 views
0

이름으로 컨트롤러에 URL을지도같은 나는 다음과 같은 라우팅 한

"이 요청을 처리하는 경로 ('{language} - {culture}/{controller}/{action}')가 ' ')는 n을 지정하지 않습니다. amespaces를 사용하여 요청과 일치하는 컨트롤러를 검색합니다. 이 경우 'namespaces'매개 변수를 사용하는 'MapRoute'메소드의 오버로드를 호출하여이 경로를 등록하십시오.

MvcApplication2.Controllers.en_EN.HomeController 
MvcApplication2.Controllers.pt_PT.HomeController" 

내가 매개 변수로 네임 스페이스 "MvcApplication2.Controllers"를 추가하려하지만 여전히,하지만 난 그것을 어떻게 볼하지는 :

'홈'에 대한 요청은 다음과 일치하는 컨트롤러를 발견했다 할 수 있었지만 인터넷에서 찾은 해결책이었습니다.

방금 ​​ASP.Net MVC로 시작 했으므로 매우 기초적인 것을 놓친 경우 미안하지 마십시오.

고마워요.

답변

0

다른 문화가 많이 있습니까? 조사하려면 MVC Areas을 사용하는 것이 좋습니다. 이런 것들을 위해 만들어졌습니다. 당신 만이있는 경우

,이처럼 경로를 하드 코드 수 :

routes.MapRoute(
    "HomeEn", // Route name 
    "en-EN/{controller}/{action}", // URL with parameters 
    new { controller = "Home", action = "Index" }, // Parameter defaults 
    new string[] { "MvcApplication2.Controllers.en_EN"} 
); 

routes.MapRoute(
    "HomePt", // Route name 
    "pt-PT/{controller}/{action}", // URL with parameters 
    new { controller = "Home", action = "Index" }, // Parameter defaults 
    new string[] { "MvcApplication2.Controllers.pt_PT"} 
); 
+0

답장을 보내 주셔서 감사합니다. 그것은 작동하지만 왜 일반 형식을 다음과 같이 쓰지 않을까요? routes.MapRoute ( "Home", "{language}/{controller}/{controller}/{action}"), new {controller = "Home" action = "Index"}, new [] { "MvcApplication2.Controllers. {언어} _ {문화권}"} ); – Marco

+0

그렇습니다. 저는 두 가지 이상의 문화권을 갖게 될 것입니다. 그러나 적어도 당분간은 영역을 사용하고 싶지는 않습니다. – Marco

+0

언어 및 문화권의 경로 값은 코드를 통해 문자열 []에 전달할 수있는 방식으로 저장되지 않으므로 경로 제약 조건을 수행 할 수는 있지만 실제로 힘들 수 있습니다. 다른 부위에 대한 사이트의 새로운 영역을 만드는 경우 왜 지역에 반대합니까? 그들은 많은 오버 헤드를 추가하지 않고 다른 영역을 분리 된 상태로 유지하는 데 도움이 될 것입니다. –

0

이것은 일반적인 오해 될 것으로 보인다. MVC 라우트는 파일 시스템과 아무런 상관 관계가 없습니다. 중첩 된 폴더에 원하는 깊이까지 컨트롤러를 묻을 수 있습니다. MVC에 대해서도 여전히 HomeController입니다.

+0

네가 맞아, 나는 얼마 전에 그걸 읽었지만, 놓친 것 같았다. 감사 – Marco