2017-01-09 1 views
2

아래 속성을 가진 모델에서 뷰를 스캐 폴딩하면 브라우저 날짜 선택 도구를 렌더링하는 코드가 생성됩니다.Scaffold a 날짜 및 시간 선택 도구

날짜 및 시간 선택 도구를 생성하는 속성을 어떻게 비계 할 수 있습니까?

[DataType(DataType.DateTime)] 
+0

기본 스캐 폴드로는 불가능합니다. 자세한 내용은 [이 답변] (http://stackoverflow.com/a/38054088/1849444)을 확인하십시오. –

+1

_ 그저 효과가있는 브라우저 날짜 선택기를 렌더링합니다. - Chrome 또는 Edge를 사용하는 경우에만 - IE 또는 FireFox에서 지원되지 않으며 사용자는 텍스트 상자를 보게됩니다. –

답변

1

당신은 사용자 정의 EditorTemplate를 작성하여이를 달성 [UIHint]와 함께 사용 MVC를 알 수 있습니다 ...

[Display(Name = "Date Start")] 
[DataType(DataType.Date)] 
public DateTime EventStart { get; set; } 

나는이 시도했지만 작동하지 않습니다.

뷰 모델 :

[Display(Name = "Date Start")] 
[UIHint("DateTimePicker")] 
public DateTime EventStart { get; set; } 

조회/공유/EditorTemplates/DateTimePicker.cshtml : 홈페이지보기

@model DateTime 

<input type="text" name="@Html.NameFor(m => m)" id="@Html.IdFor(m => m)" value="@Model.ToString("o")"/> 
<script type="text/javascript"> 
    // init the datepicker of your JS UI Framework (I am using jQuery UI here) 
    $('#@Html.IdFor(m => m)').datepicker(); 
</script> 

사용법 :

@Html.EditorFor(m => m.EventStart) 

이 방법의 문제는 당신이다 EditorTemplate에서 생성 된 JS datepicker 객체의 핸들을 느슨하게합니다. 따라서 구성을 변경하려는 경우 (예 : maxDate를 동적으로 설정) 추가 인프라를 구축해야합니다.

내 권장 사항은 JS datepicker를 필요로하는보기에 직접 연결하고 datepickers에 Editor Templates를 사용하는 대신 거기에 구성하는 것입니다.