2010-12-03 6 views
2

내 응용 프로그램은 ro-RO 문화권 설정에서 실행되며 web.config 전역 화 섹션에서 구성됩니다. 내가 RO-RO 문화에 대한 기본 날짜 형식 이후이 "2010년 12월 3일"의 날짜 값을 수정하는DateTime 및 ASP.NET MVC 3의 세계화 문제 모델 바인딩

POST /myapp/index 
date=03-12-2010&value=something 

모델 바인딩지도, 같은 POST 요청을하면 DD-MM-YYYY입니다. 내가 요청 방법을 변경하는 경우 "12 년 3 월 2010"에서 2010 년 (MM-DD-YYYY 날짜 시간 형식)

GET /myapp/index?date=03-12-2010&value=something 

$.getJSON('/Home/Index', $('form').serialize(), function(d) { 
      // ... 
}); 
$.post('/Home/Index', $('form').serialize(), function(d) { 
      // ... 
}, 'json'); 

그래서이 경우 "해서 getJSON"& "후 내 행동의 날짜 값이됩니다 동일한 데이터를 전달하려면 "동일한 결과를 반환해야하지만 datetime 차이 때문에 다른 결과를 얻습니다.

GET 요청에도 동일한 구문 분석 형식을 사용하려면 어떻게해야합니까?

날짜에 대해 yyyy-MM-dd와 같은보다 일반적인 형식을 사용할 수 있다는 것을 알고 있지만, 왜 이런 일이 발생했는지 궁금합니다. .이 주제에 내 이전 응답에서

답변

13

: 그것은 고정 문화권에서 오는 것처럼 URI의 일부 (URI의 '유니폼'참고)이다 Nullable DateTime Parameter is never bound when calling the action

"이것은 의도적 인 뭐든지 해석된다 이것은 링크를 복사하여 영국의 친구에게 IM을 통해 보내는 미국 사용자가 친구가 동일한 페이지를 볼 수 있도록하기위한 것입니다 (DateTime 변환 오류로 인해 HTTP 500이 아닌 예 :) 일반적으로 RouteData 또는 QueryString에 전달 된 날짜는 yyyy-mm-dd 형식이어야합니다.

QueryString 또는 RouteData 매개 변수를 culture 인식 방식으로 해석해야하는 경우이를 문자열로 가져온 다음 수동으로 원하는 형식으로 변환하고 원하는 문화권을 전달하십시오. (DateTime.Parse에는 culture를 지정할 수있는 과부하가 있습니다.) 이렇게하면 URI의 '통일'부분이 손실되지 않도록 QueryString 또는 RouteData 매개 변수로 원하는 culture를 가져 오는 것이 좋습니다. URL은 ... culture = fr-fr & 날짜 = 01-10-1990과 같습니다. "