탐색 및 탐색 경로에 대한 일부 게시물을 보았지만 동일한 문제를 발견하지 못했습니다. 그러나 있다면, 용서해주세요. 고맙습니다.MVC3 탐색 및 탐색 경로 - 데이터 기반
내 경우 :
Interests Profiles
| |
|_Interest Area 1 |-Profile Area 1
| | |
| |_Interest Area 1.1 |_List of Books
| | |
| |_List of Books |_Book Detail
| |
| |_Book Detail
|_Interest Area 2
|
|_List of Books
|
|_Book Detail
계층 구조는 데이터베이스에 저장됩니다. 진입 점 관심 분야 및 프로필이 고정됩니다. 거기에서 나는 아이들이 무엇을 할 것인지 모른다.
더 이상 자식이 없으면 마지막으로 선택한 (하위) 범주의 값을 기준으로 책이 검색됩니다.
여기에는 두 가지 문제가 있습니다. 첫 번째 : 적절한 경로 만들기. 내가 좋아하는 방식은 다음과 같습니다.
/books/{id}/{interestareaname}/{subinterestareaname}/{books}/{page}
여기에서 interestareaname은 사용자에게 친숙한 URL로 추가되며 계층 구조를 계속 사용하는 동안 반복됩니다. 출력은 다음과 같습니다 /책/1/프로젝트 관리/PRINCE2/책/1 이 페이지 된 listpage 페이지 1
에 PRINCE2 책을 보여줍니다하지만 한 단계 만있을 때이 경로는 하나의 포함 따라서 interestareaname과이된다 :
routes.MapRoute(
"Details",
"view/details/{id}/{booktitle}",
new { controller = "book", action = "Details", id = "*", booktitle= "*"});
routes.MapRoute(
"interests",
"books/{id}/{level1}/{level2}/{level3}/{page}",
new { controller = "book", action = "books", level1 = "*", level2 = "*", level3 = "*", id = "0", page = UrlParameter.Optional }
);
routes.MapRoute(
"profiles",
"books/{id}/{level1}/{level2}/{level3}/{page}",
new { controller = "book", action = "books", level1 = "*", level2 = "*", level3 = "*", id = "0", page = UrlParameter.Optional }
);
내가 최대 레벨을 설정해야한다는하여이에 도착 : 나는 문제 번호 하나를 해결하기 위해 무슨 짓을
/book/{id}/{interestareaname}/{books}/{page}
. 그것은 내가 더 동적 인 방법을 알지 못했기 때문입니다.
이제 문제는 관심 분야 카테고리와 프로필 카테고리를 구별하는 것입니다. 나는 같은 경로를 만들지 만 다른 이름을 사용하고 사이트 맵 생성시 경로 이름을 추가했습니다.
내가 가진 두 번째 문제는 사이트 맵과 이동 경로입니다. MVCsitemapprovider 및 DynamicNodes 기능을 사용합니다.
사이트 맵으로 세부 정보 페이지를 표시하는 데 문제가 있습니다. 이 책은 프로필과 관심사에 모두 표시됩니다. 일부 도서는 여러 관심 분야 또는 프로필에 표시됩니다. 각각의 경우에 나는 그 책에 도착하기까지의 경로를보고 싶습니다.
먼저 각 책에 대한 세부 정보 페이지를 사이트 맵에 추가했지만 그 내용은 미쳤습니다. 그리고 사이트 맵에 의해 잘 처리되지 않는 중복 된 항목을 만듭니다. 다른 옵션은 목록 페이지의 routedata를 쿼리 문에 의해 세부 정보 페이지로 전달하는 것이 었습니다.하지만 그것은 끔찍한 것처럼 보였습니다. 그런 다음 ID를 가지고 있기 때문에 탐색 경로를 모방하는 쿼리 문자열을 구문 분석하는 논리를 추가해야했습니다. 다음 최저 수준.
나는 지금 많은 밤을 보냈다. 그리고 나는 아직도 그것을 이해할 수 없다. 어떤 사람이 나를 도와 주거나 올바른 방향으로 향하게 할 수 있다면 매우 감사드립니다.
라우트가 하나의 단일 라우트로 축소되었습니다. 다른 라우트에는 결코 도달하지 않았으므로 (라우트 버그를 사용하여 찾음). 목록의 페이징 문제는 UrlParameter.Optional을 사용하여 해결할 수 있습니다. 이제 남은 유일한 문제는 책의 세부 정보 페이지로 갈 때 이동 경로를 보여주는 것입니다. – Mounhim