2012-01-13 3 views
3

현지화 관련 질문이 몇 가지 있었지만 여기에는 문제가없는 것으로 보입니다. 내 양식을 제출할 때마다, 내가 얻을 괜찮을해야하지만 같은MVC3 십진수 필드가 올바르게 유효하지 않음

<div class="editor-label"> 
    @Html.LabelFor(model => model.Rate) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Rate) 
    @Html.ValidationMessageFor(model => model.Rate) 
</div> 

<div class="editor-label"> 
    @Html.LabelFor(model => model.TravelRate) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.TravelRate) 
    @Html.ValidationMessageFor(model => model.TravelRate) 
</div> 

이 보인다 :

내 관점에서 내 뷰 모델

[DisplayName("Standard Hourly Rate")] 
public decimal Rate { get; set; } 

[Required] 
[DisplayName("Daily Travel Rate")] 
public decimal TravelRate { get; set; } 

2 개 진수 필드가, 나는 이것이이 검증 오류. 십진수로 숫자를 제출하면 그 값이 유효하지 않다고 전해집니다. 번호가 아닌 것을 입력하면 번호가되어야한다고 들었습니다.

편집 : 하는 HTML 입력이

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

<input type="text" value="" name="TravelRate" id="TravelRate" data-val-required="The Daily Travel Rate field is required." data-val-number="The field Daily Travel Rate must be a number." data-val="true" class="text-box single-line"> 

Edit2가 같이 : 컨트롤러는 단지 Modelstate.IsValid 확인하고 다음 데이터베이스에 추가합니다.

+0

렌더링 된' danludwig

+0

생성 된 입력을 – Jonathan

답변

2

좋아요, 그래서 문제는 컨트롤러에 다시 게시되는 모델이 null이라는 것이 밝혀졌습니다. 이것은 찾고있는 인수가 이자율이라고 불리며 내 모델에 Rate라는 속성이 있기 때문에 이런 일이 발생했습니다. 방금 컨트롤러에서 myrate로 요금을 바꿨는데 모두 잘되었습니다.

3

표시되지 않는 별도의 유효성 검사 방법이없는 한 숫자에 대한 유효성 검사 오류가 발생하는 것에 매우 놀랐습니다. 모델의 아무 것도 유효성 검사를하지 않는 것 같습니다 (Required 주석을 제외하고). 어쨌든, 나는 당신의 진수 검증을위한 DataAnnotationsExtensions에보고 제안 :

http://dataannotationsextensions.org/Numeric/Create

이 그럼 당신은 그냥 당신의 모델에 대한 허용하는 경우도 [DataType(DataType.Currency)]을 시도 할 수 [Numeric]

decimal 값을 장식 할 수있다.

모델에 대한 유효성 검사 방법이 있습니까?

편집

float 또는 double 대신 decimal를 사용해보십시오. 나는 decimal이라는 용어가 속일 수 있다고 생각한다. 여기 decimal 클래스를 확인하십시오 : http://msdn.microsoft.com/en-us/library/364x0z75(v=vs.80).aspx.

일부 문제를 해결할 수 있습니다. 십진수는 다음과 같습니다 :

decimal myMoney = 300.5m; 
+0

에 추가했습니다. 아니요, 모델에 유효성 검사 메소드가 없습니다. – Jonathan

+0

방금 ​​편집했습니다. – Jonathan

+0

꽤 괜찮아 보입니다. 그것은 문제가되지 않습니다. 'DataAnnotation' 스위치를 켜고 변경 사항이 있는지 확인하십시오. 나는 MVC가 번호 검증을 자동 생성한다고 생각하지 않았다. – Rondel

관련 문제