1

을 사용할 때 Nullable 속성의 기본값을 제거합니다. EditFor 도우미를 사용할 때 Nullable 속성의 텍스트 상자에 기본적으로 추가되는 기본값을 제거하려면 어떻게해야합니까? 나는 그 행동EditFor [asp.net mvc 3]

편집이

미안 충분한 정보를 제공하지 않았다 싶지 않아요.

예를 들어 Html.EditorFor를 DateTime 속성으로 사용하면 텍스트 상자 값이 자동으로 1/1/0001로 설정됩니다. "DateTime?"(Nullable)을 사용하면 텍스트 상자가 비어 있습니다.

+0

어떤 기본값이 있습니까? 당신 재산의 유형이 뭔가요? –

+0

속성 유형이 datetime 인 경우 html.editorfor를 사용할 때 텍스트 상자의 값을 기본적으로 1/1/0001로 설정합니다. – ryudice

답변

2

UIHint를 사용하여이를 수행 할 수 있습니다.

@model DateTime 
@{ var value = Model == default(DateTime) ? null : Model.ToShortDateString(); } 
@Html.TextBox(string.Empty, value) 

UIHintAttribute 우리 EditorTemplate를 참조하여 속성을 장식 EditorTemplates

에 ShortDate.cshtml라는 파일을 만듭니다. 주문 클래스를 고려하십시오. 당신이

@Html.EditorFor(x => x.Date) 

그것이 날짜 시간

주의의 기본 값을 피해야한다 사용하는 경우

public class Order { 
    [UIHint("ShortDate")] 
    public DateTime Date { get; set; } 
} 

: 난 그냥 간단한 테스트를했다, 그래서에 깊은 모습을 확인하시기 바랍니다.

희망 하시겠습니까?

2

나는 내 자신의 필요에 따라 이렇게해야했습니다. 나는 이것을 다음과 같이 사용했다 :

@model DateTime? 

@Html.TextBox("", (Model.Value != default(DateTime) ? Model.Value.ToShortDateString() : string.Empty)) 

그리고 내 DateTime 값에 대해서는 꽤 잘 작동했다. 기본값이없는 것은 비어 있고 다른 DateTime 값을 가진 것은 ShortDateString 표현을 보여줍니다.