나는 설문 조사를 만들고 있습니다. 한 번에 두 가지 질문을 표시합니다. 질문은 다른 유형 일 수 있습니다. 예를 들어 복수 선택 질문 및 "행렬"질문으로 답해야 할 행과 열이 많이 있습니다.View가 조건에 따라 다른 ViewModel을 필요로 할 때 ViewModel을 모델링하는 방법은 무엇입니까?
나는 현재 질문의 목록을 검색 ViewModels, 바로 개체 모델 (내가 이렇게 야해 알) ...코드를 사용하고 있지 않다
:보기는 다음과 같습니다
public ActionResult QuestionList(int categoryId, int page)
{
var questions = new PagedData<Question>();
questions.Data = db.Question.Where(c => c.category_id == categoryId).OrderBy(p => p.question_number).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
questions.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)db.Question.Where(cc => cc.category_id == categoryId).Count()/PageSize));
questions.CurrentPage = page;
questions.CategoryID = categoryId;
return PartialView("QuestionList", questions);
}
:
@model MvcApplication3.Helpers.Paging.PagedData<MvcApplication3.Models.Question>
@if (Model.Data.Count() == 0)
{
<h2>Denne kategori har ingen spørgsmål</h2>
}
else
{
<h2>@Model.Data.First().Category.category_name</h2>
<br />
<div>
Tryk for at komme videre til side:
@for (int i = 1; i <= Model.NumberOfPages; i++)
{
if (i == Model.CurrentPage)
{
@i
}
else
{
<a class="page-number" href="javascript:void();">@i</a>
}
}
</div>
<br />
foreach (var item in Model.Data)
{
if (item.visible == true)
{
String isAnswered = null;
if (item.Tabelform_Answers.Count() >= 1)
{
isAnswered = "answered";
}
else if(item.MCQ_Answers.Count() >= 1)
{
isAnswered = "answered";
}
else
{
isAnswered = "unanswered";
}
<div [email protected]>
@if (User.IsInRole("Administrator"))
{
@Html.ActionLink("[Rediger]", "Edit", "AdminQuestion", new { id = item.question_id }, null)
}
@Html.LabelFor(y => item.question_wording, item.question_wording, new { @class = "tooltip", title = @item.help_text })
@if (item.Question_Type.type_description == "Multiple Choice")
{
<br />
@Html.Partial("MCQDisplay", item)
}
else if (item.Question_Type.type_description == "Tabelform")
{
<br /><br />
@Html.Partial("GridDisplay", item)
}
</div>
<br />
}
}
}
@Html.HiddenFor(m => m.NumberOfPages)
@Html.HiddenFor(m => m.CategoryID)
@Html.HiddenFor(m => m.CurrentPage)
대신에 부분적인 전망 MCQDisplay과 GRIDDISPLAY에 전체 질문의 실체를 보내는, 난 단지 데이터 neccecary를 보내고 싶습니다.
이 ViewModel의 모습은 어떻습니까?
List<MultipleChoiceViewModel> mcqlist;
List<GridQuestionViewModel> gridlist;
범주를 입력 다중 선택의 아무 문제가없는 경우
,리스트가 null이 될 것입니다 :내 생각은 다음과 같이, 메인 뷰 모델에서, 질문의 각 유형에 대한 목록을 가지고 있었다 사용하지 마십시오. 이 좋은 습관인가?
그래서 ViewModels를 사용하지 않아야합니까? – Nanek
예, 그렇습니다. 그것이 내가 "그때 당신의 다른 뷰 모델을 파생시킨다"고 말한 이유입니다. "뷰 모델을 사용하지 마십시오"라는 의미로 어떻게 추측 할 수 있는지 잘 모르겠습니다. –
간단한 예제를 제공해 주시겠습니까? – Nanek