2013-10-02 1 views
1

다음과 같은 문제점이 있습니다. 내 데이터베이스에는 "float"유형의 속성이 있습니다. Entity Framework를 사용하여 모델을 만들면 동일한 특성이 "double"필드로 나타납니다.double이 null 인 경우 컨트롤러에 게시하는 경우

여기 있습니다. 보기에서, 예를 들어 "23,22"라고 쓰면 데이터 주석에 숫자가 아니라고 쓰여지고 "23.22"라고 쓰면 유효성 검사를 통과하지만 컨트롤러에 도달하면 속성의 값은 null입니다.

왜 그런가? 나는 정보를 찾고 있었지만 아직 유용하지는 않습니다.

미리 감사드립니다.

편집 : 해당 속성을 사용하는 코드를 추가합니다. 뷰에서

public class TestObject{ 

     .... 
     public Nullable<double> attribute { get; set; } 
     .... 
     } 

: 모델 클래스에서

는이처럼

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

그리고 컨트롤러 :

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Test(TestObject test) 
    { 
    .... 
     return View(); 
    } 

내가 "23.22"작성하는 경우, 컨트롤러의 속성 값에 액세스하면 null입니다.

+1

모델, 작업 방법 및보기를 게시 할 수 있습니까? 우리는 당신이이 문제를 더 깊이 진단 할 수 있도록 도와 줄 수있을 것입니다. – mattytommo

+0

괜찮 았는데, 그것은 언급 된 코드 밖의 문제 여야합니다. 전체 모델/뷰를 게시 할 수 있습니까? – mattytommo

+0

'attribute'라는 이름이 특별한 의미를 지니고 있는지 궁금합니다. 이것은 모델 바인더를 혼란스럽게합니다. 차기 만하면 속성의 이름을 다른 것으로 변경해보십시오. – asymptoticFault

답변

1

불변의 해결책으로 jQuery 문화권을 변경하여 쉼표 separetor 대신 점으로 찍을 수 있습니다. 이 경우 double이 올바르게 전달됩니다.

//For example German culture uses comma. Just add this line: 

    <script> 
    Globalize.culture("de-DE"); 
    </script> 
+0

답변 자체는 도움이되지 못했습니다. 그러나 "Globalize"로 인해 그 문제를 조사하기 시작했으며 작동중인 접근 방식을 발견했습니다. 감사. – Rodrigo

+1

@Rodrigo 같은 문제가 있습니다. 접근 방식은 무엇입니까? –