2017-01-29 3 views
0

여러 조직의 웹 사이트를 구축 중입니다. 예를 들어 사람들은 mydomain.com/org1/home/index 또는 mydomain.com/org2/home/index를 방문 할 수 있습니다.asp.net mvc routing, 매개 변수로 영역 포함

내가 뭘하려고하면 다음과 같은 경로를 가지고있다,

mydomain.com/{area}/{controller}/{action}/{id}

나는 방법을 알아낼 수 없습니다 솔직히 내 경로 설정을 시작하는 방법조차도 모릅니다. 표시 할 이미지, 텍스트 등을 결정하기 위해 {area} 문자열에 액세스 할 수 있기를 원합니다.

나는 내가하고 싶은 일에 의미가 있다고 생각합니다.

답변

0
routes.MapRoute(
name: "Default", 
url: "{area}/{controller}/{action}/{id}" 
defaults: new { 
controller = "Home", 
action = "Index", 
id = UrlParameter.Optional, 
area = UrlParameter.Optional 
); 

홈 컨트롤러는 다음과 같이 표시됩니다

public ActionResult Index(string area, string id) 
+0

덕분에 빠른 응답을 많이! 그건 분명히 그 문제를 해결합니다. 이제 항상 그렇지는 않습니다. 즉 {area} 매개 변수가 있기 때문에 저는 다른 것과 직면합니다. 이제/Account/Login으로 갈 때 오류가 발생합니다. 다음과 같이 문자열을 추가하면/foo/Account/Login으로 로그인 페이지로 이동합니다. 다른 문제가 있다는 것을 알고 있습니다. 내가 한 일은 당신이 나에게주는 경로를 첫 번째 "customRoute"로 사용한 다음 그 후에 기본 경로를 선언 한 것입니다. 이 문제를 해결하는 방법을 알고 계십니까? 아니면 다른 질문을 게시해야합니까? "계정", URL : "{컨트롤러}/{동작}/{ID}" 기본값 : 새로운 { 컨트롤러 = "계정", 행동 = "로그인" – joks

+0

당신은'routes.MapRoute ( 이름을 추가 할 수 있습니다 , id = UrlParameter.Optional ); "Default"route 위로 가기 – JohanP

+0

이제 "Default"와 "Account"의 두 경로가 있습니다. "Account"경로가 위로 올라가면 HomeController에 색인 (문자열 영역)이 있어도 mydomain.com/foo/home/index에 액세스 할 수 없으며 단순히 오류가 발생합니다. 맨 위에 "기본값"을 배치하면 mydomain.com/foo/home/index에 액세스 할 수 있지만 멋지지만 다른 컨트롤러/작업에 액세스 할 수 있습니다. 예를 들어, ActionResult Index()가있는 DivisionsController가 있습니다. 이제 mydomain.com/foo/divisions/index를 호출 할 수 있으며 mydomain.com/divisions/index를 작성한 것과 같은 페이지를 반환합니다. 나는 그것을 원하지 않는다 ... – joks