일치하는 경로를 가져 오는 데 문제가 있습니다.이 경로가 일치하지 않는 이유
웹 응용 프로그램에서 슬라이드 쇼에 대한 짧은 링크로 base-32로 인코딩 된 int를 사용하고 있습니다. 각 슬라이드 쇼에는 5 가지 버전이 있으며 각 버전을 구별하기 위해 초기 글자를 사용하고 있습니다.
base-32로 인코딩 된 int의 첫 번째 문자가 슬라이드 쇼 버전을 나타내는 문자와 같은 경우를 제외하고는 경로가 항상 일치합니다. 이 변칙은 n, f, c, x 및 h와 같은 5 개의 접두사 문자 모두에 대해 존재합니다.
처음 두 문자가 같으면이 경로가 일치하지 않습니다. 나는 여기서 어떤 일이 벌어지는 지 이해하지 못하고있다. (경로가 일치하지 않으면, 단순히 기본값으로 빠져 든다.)
경로는 (/na0
)를 일치 :
경로는 (/nn0
를) 일치하지 않습니다 :
경로가 일치 (/nfg
를)
경로가 일치하지 않습니다 (/ffg
를) :
나는 놀란다.
routes.MapRoute(
"NonBrandedSlideshow",
"n{id}",
MVC.Slideshow.NonBranded(), null,
new { id = Settings.Base32Regex }
);
routes.MapRoute(
"FullSlideshow",
"f{id}",
MVC.Slideshow.Full(), null,
new { id = Settings.Base32Regex }
);
routes.MapRoute(
"CompactSlideshow",
"c{id}",
MVC.Slideshow.Compact(), null,
new { id = Settings.Base32Regex }
);
routes.MapRoute(
"FlexibleSlideshow",
"x{id}",
MVC.Slideshow.Flexible(), null,
new { id = Settings.Base32Regex }
);
routes.MapRoute(
"Html5Slideshow",
"h{id}",
MVC.Slideshow.NonBrandedHtml5(), null,
new { id = Settings.Base32Regex }
);
내가 T4MVC을 사용하고 있습니다 점에 유의해야한다 (섹션 2.2.5 참조),이 MapRoute
방법은 확장입니다 : 여기 라우팅 코드는 스크린 샷에서 RouteDebug 테이블에서 명확하지 않다 경우입니다 T4MVC에 의해 추가되었습니다. I가 사용하고있는 MapRoute
방법은 표준 방법에 해당하고, I는 동일한 결과 비 T4MVC MapRoute
방법을 사용하여 시도 : 여기
routes.MapRoute(
"Html5Slideshow",
"h{id}",
new { controller = "Slideshow", action = "NonBrandedHtml5" },
new { id = Settings.Base32Regex }
);
I 함께이없이 시도 불구 Base32Regex이고, 제약 조건 (내가 사용하는 Base32 구현은 I와 O가 1과 0이라고 가정합니다).
public static partial class Settings
{
public static string Base32Regex
{
get { return @"[0-9ABCDEFGHJKMNPQRSTVWXYZ]+"; }
}
}
게시 할 수 있습니까? Base32 Regex? – epignosisx
@epignosisx : 예, 했어요. 그것은 스크린 샷에 있지만, 전체 크기로 나오지 않았습니다. Regex 제약 조건이 있든 없든 같은 결과를 얻었습니다. –
@qes 경로를 위해 FireFox에서 사용하는 도구는 무엇입니까 ?? –