2015-01-02 1 views
1

내 모델에서보기 템플릿을 터치하지 않은 변수가 DateTime이지만보기로 보내기 전에 GET 메서드에서 DateTime.Now으로 설정하십시오. 보기에 표시하면 확인됩니다 (실제 날짜와 시간 표시). 나머지 변수는 양식의 필드에서 변경된 다음 POST 메서드로 contoller의 작업으로 보냅니다.모델의 모든 값이 재설정되어 있습니까?

contoller의 POST 동작에서 중단 점을 설정하면 변수의 값이 {0001-01-01 00:00:00}으로 설정되어있는 것을 볼 수 있습니다.

그래서 질문은 : 모델의 모든 값을 재설정하여 봅니까?

답변

1

여기에서 무슨 일이 일어나고 있는지 보려면 장면을 뒤져 봐야합니다. GET 메서드는 변수 집합이있는 모델을 반환하며 클라이언트로 전달됩니다. 제출시 클라이언트는 모든 필드를 가져 와서 서버로 보내면 다시 Model으로 구문 분석됩니다. 일부 HTML 코드 (예 : 입력)로 표시되거나 클라이언트의 JavaScript를 통해 설정된 필드 만 전송됩니다. DateTime 값을 유지하려면 Hidden 필드를 만들어야합니다.

Html.HiddenFor(m => m.DateProperty) 

하면 같은 문제를 다루고이 질문을 참조하십시오 : What does HTML.HiddenFor do? 당신의 날짜가 서버로 다시 전송되는 필드 사이에 포함되지 않고,이 때문에 DateTime 기본 값으로 초기화 점점처럼 소리

+0

나는 그것이 올바른 answear 생각 : 당신의 POST 핸들러를받을

당신은 당신이 원하는 경우 다시 서버로 라운드 트립 할 필요가있다. 설명 해줘서 고마워. 그런데 프로그래머가 자동으로 해당 데이터 (최소한 null이 아닐 경우)를 전달하는 것이 더 좋을 수 있습니다. –

+1

이것은 단순히 불가능합니다. HTML과 HTTP는 Asp.NET MVC보다 먼저 만들어 졌기 때문에 MVC는 HTML과 HTTP에 의해 설정된 규칙들만 재생할 수 있습니다. 서버에서 HTTP POST를 비즈니스 오브젝트로 구문 분석하는 마술은 MVC가 수행 할 수있는 모든 작업입니다. 또는 HTMLHelper를 확장하고이를위한 방법을 추가 할 수 있습니다 (예 : 모델에서 사용되지 않은 각 속성에 대한 숨겨진 필드 추가). – WeSt

1

(0001-01-01).

@Html.HiddenFor(m => m.MyDate) 
관련 문제