2012-08-17 2 views
1

학교 과정 데이터를 저장하기위한 응용 프로그램을 작성 중이며 .Net MVC의 단일보기에서 2 개의 관련 모델을 저장해야하지만 내 머리를 잡지 못합니다. 이것이 어떻게 결합되어야하는지 주위에..Net MVC의 단일보기에서 여러 모델 저장 4

필자는 주제 및 클래스라는 두 가지 모델을 가지고 있는데, 하나의 주제는 많은 클래스를 가질 수 있습니다. 내 견해로는 사용자가 새 주제에 대한 세부 정보를 입력하고 단일 양식 제출으로 해당 주제에 클래스를 할당 할 수있게하려고합니다.

예 :
주체 이름
주제 리드 교사 이름

(많은 클래스가 하나의 주제에 대해이있는 경우 아래의 필드가 순환 될 수있다)
클래스 이름
수업 시작 시간
클래스 교사 이름

사용자가 와서 주체 이름과 주체 교사 이름을 입력 한 다음 새 클래스 이름, 시작 시간 및 클래스 교사를 입력합니다. na 나, 그들이 이것을 한 후에는 양식을 제출할 것이고 과목 이름과 주제 선생님 이름을 과목 모델과 수업 이름, 수업 시작 시간과 수업 교사 이름에 저장해야합니다.

  1. 두 모델의 단일보기에서 양식 필드를 만드는 방법은 무엇입니까?
  2. 제출 된 데이터를 다른 모델로 다시 저장하려면 어떻게해야합니까?

누구든지이 문제를 해결하고 내가 잃어버린 것처럼 멋진 코드를 제공하면 도움이 될 것입니다.

답변

1

래퍼를 사용하는 것이 좋습니다. 어떻게? 예 주요 클래스 느릅 나무는 관점을 나타냅니다 또는이 같은 시도, 사용중인 형성보기 모델 유형으로 설정 :

모델 : 뷰에서 다음

public class person 
    public property id as integer 
    public property name as string 
    public property status as integer 
end class 

public class marriage 
    public property husband as person 
    public property wife as person 
end class 

를 : 작업에서

@Modeltype marriage 

<span>Wife Name:</span></br> 
@Model.wife.Name 

</br> 

<span>Husband Name:</span></br> 
@Model.husband.Name 

우리는 클래스 결혼을하고 각 사람을 얻을 분리

dim t_wife as person = marriage.wife 
dim t_husband as person = marriage.husband 

'Put save wife code here --- 

'Put save husband code here --- 
3

이것은, viewModel가 사용하는 것과 완전히 같습니다. 당신은 UI에 새로운 클래스를 만들고보기에 액세스 할 필요가 어떤 속성을주고

public class SubjectClassViewModel() 
{ 
    public string SubjectName {get; set;} 
    public string LeadTeacherName {get; set;} 
    public string ClassName {get; set;} 
    public DateTime StartTime{get; set;} 
    public string TeacherName{get; set;} 
} 

그리고 강하게, 컨트롤러에서이 뷰 모델 에보기를 입력 뷰 모델을 수집하는 데이터를 저장 해당 표는

[HttpPost] 
public ActionResult Details (SubjectClassViewModel viewModel) 
{ 
    //can't really give details here without knowing what pattern you're using for data access 
    //but basically you want to 
    //save viewModel.SubjectName and viewModel.LeadTeacherName to the Subject table 
    //save viewModel.ClassName, etc to the Class table 
}