2011-02-03 3 views
4

먼저 MVC를 처음 사용하고 ASP.NET MVC3을 사용해 보았습니다.MVC3에 매개 변수 및 목록이있는 폼을 작성하는 방법

나는이처럼 보이는 페이지를 구축하려는 :

시작 날짜 : [날짜 상자] 종료 날짜 : [날짜 상자] [검색 버튼]

[결과 표]

사용자가 시작 날짜와 종료 날짜 (유효성을 검사해야 함)를 입력 한 다음 검색 버튼을 클릭하면 일치하는 결과가 나타납니다.

그래서 어떻게 구성합니까?

public class ResultSearchModel 
{ 
    [Required] 
    [DataType((DataType.DateTime))] 
    [DisplayName("Start Date")] 
    public DateTime StartDate { get; set; } 

    [Required] 
    [DataType((DataType.DateTime))] 
    [DisplayName("End Date")] 
    public DateTime EndDate { get; set; } 

    public List<ServiceEntry> ServiceEntries { get; set; } 
} 

public class ServiceEntry 
{ 
    public DateTime Date { get; set; } 
    public string Code { get; set; } 
    public string Details { get; set; } 
} 

그래서, 내 인덱스 컨트롤러 액션이 ResultSearchModel의 인스턴스를 contruct이 모델과 뷰를 반환해야합니다 : 여기에 모델 클래스의 내 생각이야?

하나의보기에서이를 수행합니까, 아니면 목록 부분에 대한 부분보기가 있어야합니까?

@Html.DisplayFor(x => x.ServiceEntries) 

을 한 다음은 ServiceEntries 콜렉션의 각 요소에 대해 렌더링됩니다 해당 템플릿 (~/Views/Home/DisplayTemplates/ServiceEntry.cshtml)를 정의 할 수 있습니다 :

답변

3

나는 결과의 표시 템플릿을 사용할 수 있습니다. 따라서 폼을 렌더링하는 컨트롤러와 폼에서 POST를 수락하고 검색을 처리하는 컨트롤러가 있습니다. 첫 번째 작업에서는 결과가 표시되지 않도록 ServiceEntries 속성을 비워두면보기 모델을 반환하고 두 번째 작업에서는이 속성을 채 웁니다. 유형으로 IEnumerable<ServiceEntry>도 사용합니다.

+0

감사합니다. Darin - 저도 일종의 작업입니다. 따라서 ServiceEntry.cshtml 템플릿은 각 속성에 대해 td가있는 테이블 행이됩니다. 이 코드를 생성 할 수있는 좋은 방법이 있습니까 (예 : Add View ...)? 아니면 직접 코딩해야합니까? –

+0

@Craig, ServiceEntry에는 단 하나의 행만 포함됩니다. 'DisplayTemplates' 폴더에 Add View로 생성하고'ServiceEntry'를 모델로 가져올 수 있습니다. –