2011-07-05 3 views
0

내 모델에는 public DateTime Date {get;set;} 속성이 있다고 가정 해 보겠습니다. 보기에서 그것은 두 개의 텍스트 상자로 표현되어야합니다 - 하나는 Date를위한 것이고 다른 하나는 Time을위한 것입니다.동일한 DateTime 값에 대해 서로 다른 EditorTemplates를 사용할 수 없습니까?

@model DateTime? 
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker", style = "width:90px" }) 

및 TimeOnly.cshtml

@model DateTime? 
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortTimeString() : string.Empty), new { @class = "timePicker", style = "width:90px" }) 

그리고보기

@Html.EditorFor(x => x.Date) 
@Html.EditorFor(x => x.Date,"TimeOnly") 

에 EditorFor 필드 :

나는 두 개의 서로 다른 편집기 템플릿

DateTime.cshtml을 생성

이제는 컨트롤러에 전달 된 Date 속성의 실제 값이 기본 시간 인 12:00으로 설정됩니다. EditorFor 필드의 순서를 변경하면 Date에 똑같은 일이 발생합니다. TimeOnly 템플릿이 적용된 직후 날짜가 다시 원래 Date 값으로 롤백되지만 Time 부분은 올바른 상태로 유지됩니다. 뷰 자체 값을 확인하지만,에 제출에 다시

중 하나 정확한 날짜와 기본 시간과 반대와 코스 I의

(처음 사용하는 템플릿에 따라 다름), 컨트롤러에 기본 값을 전달 모델에 다른 속성을 추가하여 항상 날짜와 시간을 분리 할 수 ​​있지만 더 나은 솔루션이 있습니까?

답변

1

Scott Hanselman은 custom model binder이이 경우 어떻게 사용될 수 있는지 블로그했습니다.

+1

이제 내가 말할거야 : 대린, 네가 실제 살아있는 사람이라고 생각하지 않아. 그럴 수는 없습니다. 내 생각에 당신은 지구상에서 가장 똑똑한 몇몇 사람들이 협력하여 만든 구글 로봇 일 것입니다. 항상 정답으로 빨리 나오기 란 불가능합니다. 넌 날 놀라게하고있어. – Agzam

+1

@Agzam, 방금 인터넷을 통해 StackOverflow에 흩어져있는 정보의 광대 한 바다를 모으기 위해 내 경험을 사용하고 있습니다 :-) 이것은 말하자면, 이전의 프로젝트에서 여기에 질문 된 대부분의 질문을 통해 대답이 나온 것입니다. 분명한. –

관련 문제