2014-01-30 1 views
3

내 응용 프로그램에서 MVC Culture는 "en-US"로 설정되고 UICulture는 "nl-NL"로 설정됩니다.
Datetime 개체가 포함 된 모델을 렌더링하는 뷰가 있습니다.
나는 이런 식으로 렌더링하는 경우 : 그것이 EN-US 문화 형식으로 표시됩니다UICulture를 Html.EditorFor 메서드로 설정하십시오.

Html.EditorFor(x => x.ForFilter.FromDate) 

. 그래서 네덜란드의 형식으로 날짜를 표시하기 위해 나는이 작업을 수행했다 :

var shortDatePattern = System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern; 
@Html.TextBoxFor(x => x.ForFilter.FromDate, new {Value = Model.ForFilter.FromDate.ToString(shortDatePattern) }) 

나는 내가 DateTime 필드에 사용할 수있는 DisplayFormat 속성의 존재를 알고 있지만,이 솔루션으로 인해 아니다 UICulture은 런타임에 결정됩니다.

EditorForTextboxFor 방법으로 Culture 대신 UICulture을 사용하는 것이 더 멋진 해결책입니까?

+0

Microsoft는 예, 물론 내가주는 또 다른 예를 미국 이외의 형식으로 날짜가 MVC – Liam

+0

에 있는지 잊고 -의 것으로 보인다. Session.CreateSQLQuery() 및 List() 메소드를 통해 nhibernate로 손으로 작성한 SQL 쿼리를 실행할 때 단지 원시 객체 만 가져옵니다. 그런 다음 Convert.ToDateTime (x [1])과 같은 것을하려고하면; 여기서 x는 사용하는 SQL 서버에서 반환 된 날짜 형식이 응용 프로그램 문화권의 예상 형식과 일치하지 않으면 문제가되는 원시 객체의 객체 배열입니다. 이것은 응용 프로그램 문화가 UICulture와 항상 같을 수없는 또 다른 이유입니다. – user1980412

답변

0
Model.ForFilter.FromDate.ToString("d", CultureInfo.CurrentUICulture) 

은 현재 IMHO보다 우아합니다.

그러나 nl-NL 문화에서 날짜 형식 (아마도 숫자)을 사용하려면 CurrentCulture을 nl-NL로 설정하지 않으시겠습니까? 예를 들어

, in web.config :

<globalization culture="nl-NL" uiCulture="nl-NL" /> 
+0

문화권은 런타임에 결정되기 때문에. 따라서 사용자 X의 경우 culture가 네덜란드어 여야하지만 일부 다른 사용자의 경우 독일어는 예를 들어야합니다. 그래서 저는 응용 문화를 en-US로 유지하고 사용자 문화에 따라 모든 자원/날짜/숫자를 형식화하기 위해 UICulture가 변경되었습니다. – user1980412

+0

@ user1980412 - 그렇다면 단순히 CurrentCulture를 사용자 별 문화권으로 설정하지 않으시겠습니까? – Joe

+0

입니다. 일부 SQL 쿼리를 작성하기 위해 en-US 문화권에 의존하는 코드가 있기 때문입니다. 예를 들어, 삽입/업데이트를 할 때 업데이트 될 값이 4.12로 표시된 SQL 수준에 있어야하는 부동 소수점이면 culture를 nl-NL로 설정하면 4,12가됩니다. UI에 대해서도 응용 프로그램의 culture에 의존해야한다면 UICulture 속성이 더 이상 필요하지 않다는 것을 알 수 있습니다. ASP.NET Web Forms을 더 자세히 살펴보면, 올바르게 기억하면 폼의 레이블에 값을 설정할 때 UICulture가 고려됩니다. – user1980412

관련 문제