2011-02-04 3 views
0

기본 MVC 부분이없는 것 같습니다. 상황은 다음과 같습니다.MVC 폼이 http로 가져온 것입니다 (의도하지 않게).

세 개의 부분보기 (하나는 테이블, 두 개는 각각 한 개의 양식)로 View (Index.aspx)를가집니다.

4 가지보기 모두 강하게 입력됩니다. 부모 (index.aspx)에는 모델로 부분 뷰에 전달되는 세 개의 특성이 포함 된 모델이 있습니다.

부분 뷰 중 하나의 모델 (사용자가 테이블의 새 레코드를 만들 수있는 양식) 중 하나는 양식을 제출할 때 유효성을 검사 할 수 있도록 DataAnnotations를가집니다. 내 작업에서

<%: Html.EditorFor<MyType, DateTime>(m => m.StartDate, new { @class = "specialclass" })%> 

: 두 개의 양식 필드 내 부분 뷰과 같이 입력 필드의 Html.EditorFor() 도우미를 사용하십시오 RangeAttribute [Range(1000,9999)] 두와 정수 [DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}")]

같은 DisplayFormatAttribute으로 날짜 시간을되어 있습니다 메서드 부모를위한 View 모델을 만들고 partial (레코드로 채워진 테이블 제외)에 대한 빈 뷰 모델을 추가 한 다음 반환 된 View() 문에 전달합니다. 테이블을 채우지 만 양식 필드는 비어 있어야하지만 제외 된 것은 예외입니다.

그래서 내보기 필드에서 두 개의 정수 필드에 0을 채우고 두 개의 날짜 필드에 최소 날짜 값을 채우는 이유는 무엇입니까?

무엇이 잘못 되었나요?

내 질문은 짐작합니다. 폼에 강력한 형식의 사용자 정의 컨트롤이있는 경우 부모 뷰에 대해 http를 얻을 때 어떻게 처리해야합니까? 모델을 전달해야합니다.

답변

0

값을 설정했는지 여부에 관계없이 시스템에서 값을 설정하려고 시도합니다. int가 nullable이 아니기 때문에 초기화되지 않았을 때 0을 반환하여 하나가 분명 해지는 경향이 있습니다. NULL이 될 것이라고 가정하는 DateTime은 DateTime.Min을 기본값으로 지정하므로 필드와 서식을 통해 데이터가 있어야합니다.

+0

좋습니다. 당신의 답변에 감사드립니다! 그래서, 후속 질문 : 강력하게 형식화 된 양식이 있지만 HTTP GET (초기)으로보기를 가져올 때 필드가 채워지지 않을 것으로 예상하는이 siutation은 ASP MVC 응용 프로그램에서 매우 일반적인 시나리오 여야합니다 . 예상되는 결과를 얻는 방법, 즉 모든 필드를 비어있는 것으로 표시하는 가장 좋은 방법은 무엇입니까? DisplayFormatAttribute를 변경해야합니까? 예상 날짜 형식은 어떻게 설정합니까? 사용자가 ddMMMyy와 같은 값을 입력 할 수있게하려는 경우 다른 모든 형식을 허용해서는 안됩니다. 내 모델에서이를 어떻게 제한합니까? – Anton

관련 문제