2012-04-16 2 views
1

의 ViewModel :도우미 EditorFor에서 자동 채우기를 중지하는 방법?

[Required] 
public int Hours { get; set; } 

면도기 :

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

출력 : 제공 무엇

<input type="text" value="0" name="Hours" id="Hours" 
data-val-required="The field is required." 
data-val-number="The field must be a number." 
data-val="true" class="text-box single-line valid"> 

, 값이 자동으로 꽤 많은 점에서 검증을 우회한다 0으로 채워하는 이유 사용자는 실제로 아무것도 입력하지 않고이를 제출할 수 있습니다.

답변

3

귀하의 재산 유형은 0 인 값 유형 인 int입니다.

제대로 Hoursnullable 만드는 작업 속성 Reuired을 원하는 경우 :

[Required] 
public int? Hours { get; set; } 
+0

내가 dropdownfor 목록과 이런 짓을했는지. nullable 형식을 사용하면 자동 채우기가 변경되는 이유는 정확히 무엇입니까? 또한, (C#에서 Hours.value를 읽는 것 외에) 부작용이 있습니까? –

+0

'@ Html.EditorFor (m => m.Hours)'를 쓸 때 모델에 Hours 값이 포함되어 있지 않으면 프레임 워크는 거기에 값을 넣어야합니다. 그래서 당신의 경우에는 타입의 기본값 인 0을 사용합니다. 문자열과 참조 타입의 경우 기본값은'null '이며'value = ""'로 변환됩니다. 'Hours.Value' 액세스 모드 옆에 nullable로 인한 문제는 없습니다. – nemesv

+0

다른 방법이 있습니까? 뷰 모델에 int가 아닌 int가 있어야합니까? 그러나 나는 새로운 창조물에서 '비어있는'형태로 시작하기를 원합니다. –

관련 문제