내 MVC2 앱은 후속 AJAX 호출을 동일한 작업으로 되돌려 보내는 구성 요소를 사용합니다.이 구성 요소는 모든 종류의 불필요한 데이터 액세스 및 서버 처리를 유발합니다. 구성 요소 공급 업체는 이러한 후속 요청을 다른 작업으로 다시 라우팅 할 것을 제안합니다. 후속 요청은 특정 쿼리 문자열을 가지고 있다는 점에서 다르며, 내 경로 테이블의 쿼리 문자열에 제약 조건을 둘 수 있는지 여부를 알고 싶습니다.내 MVC2 앱에서 쿼리 문자열 매개 변수의 경로 제약 조건을 지정할 수 있습니까?
예를 들어, 초기 요청은 http://localhost/document/display/1과 같은 URL로 제공됩니다. 이것은 기본 라우트로 처리 할 수 있습니다. URL에서 "공급 업체"를 감지하여 http://localhost/document/display/1?vendorParam1=blah1&script=blah.js 및 http://localhost/document/display/1?vendorParam2=blah2&script=blah.js과 같은 URL을 처리하는 사용자 지정 경로를 작성하고 싶습니다.
routes.MapRoute(
null,
"Document/Display/{id}?{args}",
new { controller = "OtherController", action = "OtherAction" },
new RouteValueDictionary { { "args", "vendor" } });
내가 계정에 쿼리 문자열을 사용 경로를 쓸 수 :
나는은 다음 만이System.ArgumentException: The route URL cannot start with a '/' or '~' character and it cannot contain a '?' character.
가 발생 했어요? 그렇지 않다면 다른 아이디어가 있습니까?
업데이트 : 내가 http://localhost/document/display/1이 DocumentController.Display
조치로 라우팅되지만 http://localhost/document/display/1?vendorParam1=blah1&script=blah.js가 VendorController.Display
조치로 라우팅되도록 라우팅 제약을 쓸 수 있습니다, 간단히 말하면? 궁극적으로 쿼리 문자열에 "공급 업체"가 포함 된 URL을 VendorController.Display
작업으로 라우팅하려고합니다.
첫 번째 URL은 기본 경로로 처리 할 수 있지만 두 번째 것은 어떨까요? 이 모든 작업을 수행 할 수 있습니까? 많은 부분의 시행 착오 끝에 내 대답은 "아니오"인 것처럼 보입니다.
감사합니다. Jan.이 문제를 좀 더 자세히 살펴보면 내가하고 싶은 일에서 효과를 낼 수 있다면 답을 바꿀 수도 있습니다. 후속 조치로, MVC 3에서이 중 하나를 변경하겠습니까? – flipdoubt
아니요, 저는 이것이 MVC 3에서 잘 작동 할 것이라고 확신합니다. 이것들은 Microsoft 구현의 기본적인 개념입니다. ASP.NET은 실제 파일에 실제로 매핑되지 않는 10.000.000 개의 다른 URL을 ASP.NET이 좋아하지 않기 때문에이를 사용합니다. –