ASP.Net MVC 3을 사용하여 CMS 시스템의 간단한 프로토 타입을 작성하려고합니다.이 ASP.NET 라우팅이 제대로 작동하려면 어떻게합니까?
시스템에는 show 및 create의 두 가지 작업이있는 단일 컨트롤러가 있습니다.
'표시'작업의 형식은 최대 5 개의 선택 가능한 부분을 취하는 형식입니다. domain.com/part1/part2/part3/part4/part5
'표시'작업의 형식은 유사하지만 앞에 '생성'부분이 있어야합니다. domain.com/create/part1/part2/part3/part4/part5
나는이 내를 Global.asax에서 다음 설정 :
내 '쇼'방법은 페이지가 일치 찾을 실패하면routes.MapRoute(
"CreatePageRoute",
"create/{part1}/{part2}/{part3}/{part4}/{part5}",
new
{
controller = "Page",
action = "Create",
part1 = UrlParameter.Optional,
part2 = UrlParameter.Optional,
part3 = UrlParameter.Optional,
part4 = UrlParameter.Optional,
part5 = UrlParameter.Optional
});
routes.MapRoute(
"Default",
"{part1}/{part2}/{part3}/{part4}/{part5}",
new
{
controller = "Page",
action = "Show",
part1 = UrlParameter.Optional,
part2 = UrlParameter.Optional,
part3 = UrlParameter.Optional,
part4 = UrlParameter.Optional,
part5 = UrlParameter.Optional
}
);
제공된 경로가있는 새 페이지를 만드는 옵션이 포함 된 '찾을 수 없음'페이지를 반환합니다. 이 링크는 다음 사용하여 정의됩니다 :
@Html.ActionLink("Yes", "Create")
은 [(가) "예"라는 질문에 대한 답을 나타냅니다를? "이 경로에 대한 페이지를 만들고 싶어"]
그래서 '기본을 테스트 할 때 쇼 '행동 다음 경로의 모든 성공적이라고'경로 내는 것을 볼 ' {빈} A/B A/B/C A/B/C/D A/B/c/d/e
위대한입니다.
그러나 "@ Html.ActionLink ("Yes ","Create ") 문에 의해 생성 된 결과 'create'링크는 일관성없는 결과를 제공합니다. 그것은 입력의 길이에 따라 다른 하이퍼 링크를 생성하는 것 같습니다. 결과는 다음과 같다 : 경로에 대한
"{빈}"링크 "{포트} 로컬 호스트 /"제공 -을 위해 내가 기대했다 : "를 경로에 대한
"{포트} 로컬 호스트/생성 "/a ", 링크는"localhost {: port}/"를 제공합니다."localhost {: port}/create/a "를 원합니다.
경로"/ a/b " : port}/a "-"localhost {: port}/create/a/b "를 희망했습니다.
"/ a/b/c "경로의 경우"localhost {: port}/a/b "-"localhost {: port}/create/a/b/c "를 원했습니다.
"/ a/b/c/d"경로의 경우 "localhost {: port}/create/a/b/c/d"를 제공합니다.
경로 "https://stackoverflow.com/a/b/c/d/e "링크는"localhost {: port}/create/a/b/c/d/e "를 제공합니다. "/ a/b/c/d"또는 "/ a/b/c/d/e"를 제공 할 때 작동합니까?
은 내가 바보 인거야 알고, 내가 여러 선택적 매개 변수가되는 불일치의 원인이 있다고 생각 나
샌디
얼마 뒤 나는 비슷한 문제가 있었다 :에 대해 어떻게
. 'UrlParameter.Optional'을'' "로 변경해보십시오." – Omar