2010-12-15 3 views
2

빈 매개 변수가 나는 오직 자동화 된 프로세스에 의해 호출해야 경로를 가지고 허용 : 는 MVC 경로

routes.MapRoute(
    "Automated file processing", 
    "Process/{change}/{file}/{type}", 
    new { controller = "C", action = "Process" } 
); 

이 경우 모두 filetype는 선택적 매개 변수입니다. 이상적으로 전화를 걸 수 있습니다.

/Process/Created/Filename/Text (with file and type) 
/Process/DirectoryListing//Text (with type only) 
/Process/Created/Filename/  (with file only) 

중간에 선택적 매개 변수를 어떻게 적용 하시겠습니까? 내가 경로에 file = "", type = ""를 추가 할 경우에도 내가 보여 예제 경로로, 내가 얻을 :

HTTP 오류 400 - 잘못된 요청.

+0

비슷한 문제가 있었는데 여기에 게시했습니다 : http://stackoverflow.com/questions/4743431/need-help-canonicalizing-an-http-get-form-in-asp-net-mvc. 기본적으로 Darin은 옳습니다. 마지막 매개 변수 만 선택적 일 수 있습니다. – danludwig

+0

이것을보십시오, http://bit.ly/dem6F5 – user960567

답변

3

경로 중간에 선택적 매개 변수를 사용할 수 없습니다. 명백한 이유로 의 마지막 매개 변수는 선택 사항 일 수 있으며 라우팅 엔진이 다른 가능한 경우를 모호하게 할 수 없습니다.

+5

왜 '//'가 경로에 절대 나타나지 않는지 확실하지 않습니다 ... – configurator

0

나는 내가이 일하기 전에 다른 경로를 정의 할 옵션 중간 매개 변수의 file = UrlParameter.Optional, type = UrlParameter.Optional

을 추가해야합니다 생각합니다.

+0

저는'file = UrlParameter.Optional'이 둘 모두 누락 된 경우를 수정하지만, 중간 매개 변수가 누락 된 경우가 아니라고 생각합니다. (그리고''' URL에). 다른 경로를 어떻게 정의 할 수 있습니까? 'Process/{change} // {type}'는 작동하지 않습니다. – configurator

+0

그래, 그게 효과가 없을거야. ..../file- {file}/type- {type}, 쿼리 문자열 매개 변수 또는 이와 유사한 것을 할 수 있습니다. –