설문 조사를 만들고 편집 할 수있는 응용 프로그램이 있습니다. 각 설문 조사는 일련의 질문과 관련 응답 (답변)을 포함합니다. 설문 조사가 생성되면 질문 모음은 별도의 Questions
테이블에서 생성됩니다. 매년 동일한 질문 세트를 사용하는 각 사용자에 대해 새로운 설문 조사가 만들어 지므로 시간이 지남에 따라 응답을 비교할 수 있습니다.관련 데이터를 기반으로 편집 뷰 모델 만들기
설문 조사가 만들어지면 각 질문에 대한 답변이 저장되지만 사용자는 각 질문에 대한 응답을 제공하지 않았으므로 기존 응답을 편집하기 위해보기를 작성해야합니다.
모델 여기
public class Survey
{
public int ID { get; set; }
public int AreaID { get; set; }
public Status Status { get; set; }
public DateTime AssessmentDate { get; set; }
public virtual Area Area { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
public class Question
{
public int ID { get; set; }
public string QuestionText { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
public class Answer
{
public int ID { get; set; }
public int? Response { get; set; }
public int QuestionID { get; set; }
public int SurveyID { get; set; }
public virtual Question Question { get; set; }
public virtual Survey Survey{ get; set; }
}
내가 편집 화면
public class SurveyResponseViewModel
{
public Assessment Assessment { get; set; }
public IEnumerable<Question> Questions { get; set; }
}
과 GET 방식의 코드 내보기를 만드는 데 사용할 내 뷰 모델
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Survey survey = db.Surveys.Find(id);
var viewModel = new SurveyResponseViewModel
{
Survey = survey,
Areas = new SelectList(db.Areas, "ID", "SubLevel").ToList(),
Questions = db.Questions.Where(q => q.isActive)
};
if (survey == null)
{
return HttpNotFound();
}
return View(viewModel);
}
이된다 내보기 모델에 모든 질문이 채워지지만 각 질문에는 답변 모음이 포함되어 있습니다. 보기에서이 설문과 관련된 각 질문에 대한 대답 만 표시하고 편집하려면 어떻게합니까? 응답 int?
하며 (사용자가 아직 응답을 제공하지 않은 경우 나 null
) 0
및 5
사이의 값을 가질 수
@foreach (var question in Model.Questions)
{
// Display the question
@Html.Raw(question.QuestionText)
// How to create an input for the associated response??
<input type="text" name="????" placeholder="Enter a number..." value="????" />
}
참고. 이상적으로 이것은 가능한 값을 선택하는 라디오 버튼으로 렌더링되기를 바랍니다.
먼저 ([이 답변] 참조 (http://stackoverflow.com/questions/30094047/html-table-to 컬렉션에 대한 양식 컨트롤을 생성하는'foreach' 루프를 사용할 수 없습니다 수 있습니다 -ado-net-datatable/30094943 # 30094943)). 둘째, 질문에는 하나의 대답 만있을 수 있으므로 '질문'에 대한 모델을 보려면 답변의 집합이 아닌 '답변' –
@StephenMuecke의 설문지에는 일련의 질문 목록이 있지만 많은 설문 조사가있을 수 있으며 각 설문 조사에서 질문에 답변 할 수 있습니다. 예를 들어 설문 1의 질문 1은 3의 대답을 가질 수 있지만 다른 설문에서는 같은 질문의 답이 7 – totalitarian
일 수 있습니다.이 경우 다른 foreach 루프를 사용하지 않을까요? –