데이터 주석으로 DateTime 형식을 지정 하시겠습니까?


99

내 뷰 모델에이 속성이 있습니다.

[DataType(DataType.DateTime)]
public DateTime? StartDate { get; set; }

날짜를 표시하거나 텍스트 상자에 날짜를 채우려면 다음이 필요합니다.

<%: Model.StartDate %>

<%: Html.TextBoxFor(m => m.StartDate) %>

날짜가 표시 될 때마다 다음과 같이 표시됩니다. 01/01/2011 12:00:00 AM

하지만 2011 년 1 월 1 일만 표시하고 싶습니다

데이터 주석이있는 표시 형식을 적용하는 방법이 있습니까? 날짜를 표시하는 모든 인스턴스로 이동하여 형식을 지정하는 코드를 추가하고 싶지는 않습니다.


답변:


149

다음과 같이 태그를 지정하십시오.

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

방금 시도했지만 TextBox에 시간이 표시되고 페이지에 방금 표시 될 때도 표시됩니다.
Steven

3
@Steven : [DataType(DataType.DateTime)]아직 제거 하지 않았다면 제거해 볼 수 있습니까 ?
David Fox

8
DisplayFormatEditorForDisplayFor도우미 에서만 작동합니다 .
Ε Г И І И О

1
좋은 대답- "ApplyFormatInEditMode"매개 변수가 누락되었습니다.
CodeHxr

5
Html.TextBoxFor의 형식 매개 변수로이 문제를 해결할 수있었습니다. 로 설정함으로써 @Html.TextBoxFor(model => model.YOUR_DATE, "{0:MM/dd/yyyy}")표시 할 날짜 만 얻을 수있었습니다. 여기에서 찾았습니다 [ stackoverflow.com/a/14529347/2938775] .
Caffeinius

44

이거 해봤 어?

[DataType(DataType.Date)]

2
브라우저가 지원하는 경우 HTML5 날짜 선택기 지원도 활성화됩니다.
AaronLS

24

mvc 4에서는 TextBoxFor..

@Html.TextBoxFor(m => m.StartDate, "{0:MM/dd/yyyy}", new { @class = "form-control default-date-picker" })

따라서 모델 또는 뷰 모델 클래스에서 데이터 주석을 사용할 필요가 없습니다.


그래, 이러한 DataAnnotations는 EditorFor 도우미에게 훌륭하게 작동하지만 IEnumerable (Of Entity)로 사용자 지정 그리드를 렌더링 할 때 .TextBoxFor를 사용해야하며 이것이 내 문제였습니다. 감사합니다
bkwdesign 2015

22

데이터 필드가 이미 DateTime 데이터 유형 인 [DataType(DataType.Date)]경우 주석 에 사용할 필요가 없습니다 . 다음을 사용하십시오.

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

jQuery에서 달력에 datepicker를 사용하십시오.

    $(document).ready(function () {
        $('#StartDate').datepicker();
    });

HTML에서 EditorFor도우미를 사용하십시오 .

    @Html.EditorFor(model => model.StartDate)

"데이터 필드가 이미 날짜 시간 데이터 유형 인 경우, 당신은 사용할 필요가 없습니다 [DataType(DataType.Date)]"=> 도움이되었다 그
하산 타 레크

그러나 웹 API의 경우 표시 형식이 적용되지 않습니다 DataFormatString = "{0:MM/dd/yyyy}"(400 개의 요청 본문도 다른 형식을 갖지 않음 {"dob":"31/12/1990"})
Hassan Tareq

18

다음과 같이 DataAnnotation을 적용합니다.

[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]

10

이것을 사용하지만 완전한 솔루션입니다.

[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]



1

그것은 나를 위해 작동합니다

[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]

0

모델 생성시 아래 코드를 사용하여 속성을 설정하십시오. 문제가 해결 될 것이라고 생각합니다. 시간이 데이터베이스에 나타나지 않습니다. 주석을 추가 할 필요가 없습니다.

private DateTime? dob;
        public DateTime? DOB
        {
            get
            {
                if (dob != null)
                {
                    return dob.Value.Date;
                }
                else
                {
                    return null;
                }

            }
            set { dob = value; }
        }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.