2013-07-13 2 views
0

MVC 아키텍처를 사용하여 측량 앱의 모델 구조를 파악하려고합니다. 사실 더 큰 웹 애플리케이션 내의 섹션 Q & 섹션입니다. 나는 약 120 개의 질문을 가지고 있으며, 모두 답변을위한 옵션을 설정하고, 서면 답은 설정하지 않을 것입니다. 현재 저는 3 개의 테이블을 가지고 있습니다 :MVC4 측량 웹 앱용 구조

Question(id, QuestionText) 
Answer(id, Userid, Questionid, AnswerOptionId) 
AnswerOption(id, Option) - example: Yes, No, 1-10, etc 

저는 뷰 모델과 뷰를 빌드하는 방법을 알아 내려고하고 있습니다. 그냥 같은 것을 가질 수 없습니다.

@Html.LabelFor(m => m.QuestionText) 

이 중 120 개가 있습니다. 루프 등을 사용해야합니까? 또한 앱을 살 때 미래에 질문을 추가/삭제/편집 할 가능성이 있기 때문에 질문을 앱에 하드 코딩하고 싶지 않습니다.

나는 검색을했지만 MVC에 내장 된 실제 설문 조사가 아니라 설문 조사를 만드는 앱만 발견했습니다. 어떤 예를 알면 알려주세요.

답변

1

실제로 이번 주 초에 똑같은 문제가 발생했습니다. 내가하고 결국 무엇 성공적이었다이 :

내 모델 내 시나리오에 필요한 필요한 속성 쓴 사용자 정의 클래스 인 질문의 목록으로 구성

List<Question> Questions { get; set; } 

내보기가 사용 DropDownListFor에 반대, 나는 각 질문의 ID를 사용하여 이름 설정하고 같은 foreach는 블록의 내부에있는 DropDownList : 컨트롤러에 HttpPost에

@foreach (Question question in Model.Questions) 
{ 
    <li>@question.QuestionText</li> 
    <li>Answer: @Html.DropDownList(String.Format("ddlAnswer{0}", question.QuestionId), Model.Answers)</li> 
} 

, 나는에 대한 매개 변수로 FormCollection를 전달하고있다 액션과 반복을 통해 다시 결과 집합. 이것은 비효율적 인 것처럼 보이지만 여러 시나리오에서 테스트 한 결과 매우 빠르게 실행됩니다.

[HttpPost] 
public ActionResult Index(SurveyModel model, FormCollection form) 
{ 
    foreach (Question question in model.Questions) 
    { 
      question.QuestionAnswer = form[String.Format("ddlAnswer{0}", question.QuestionId)]; 
    } 
} 
+0

글쎄, 그 가치가있다. 나는 약 4 개월 동안이 프로젝트를 책상 위에두고 있었으므로 나는 무엇이든 열어 놓았다. 감사. – BattlFrog

+0

각 질문에 대한 대답이 다른 경우 각 질문에는 대답 개체 목록이 있습니다. 이 작업을 시도하고 있지만 작업을 게시하기 위해 뷰 모델을 매핑하는 데 문제가 있습니다. 답변 목록은 게시물 작업에서 0 개의 답변으로 표시됩니다. – AlokBhatt