0
我正在填充一個包含動態數量的問題的「頁面」,(可選)選項和用戶答案。在調試過程中,我可以看到我的字段已填寫完畢,但無論我嘗試了什麼,QuestionOptions都會填充爲數組。語法來填充linq數組?
這是許多或無選項的一個問題,可以有許多對問題的回答,但每個用戶ID只有1個。
這是我的獲取查詢;
[HttpGet]
public ActionResult ViewQuestion(int page = 1) {
var userId = User.Identity.GetUserId();
var question = (from q in db.Questions
join qo in db.QuestionOptions on q.Id equals qo.QuestionId
join r in db.Responses on q.Id equals r.QuestionId
where q.PageNumber == page && r.UserId == userId
select new GetQuestionViewModel
{
// DOESN'T WORK QuestionOption1 = qo.QuestionOption1.ToList<QuestionOption>(),
// DOESN'T WORK QuestionOption = qo.QuestionOptions.ToList<QuestionOption1>(),
QuestionOptionRanking = qo.QuestionOptionRanking,
Id = q.Id,
Options = q.Options,
QuestionTypeId = q.QuestionTypeId,
Question1 = q.Question1,
QuestionRanking = q.QuestionRanking,
Answer = r.Answer
}).ToList();
return View(question);
}
而這是我的ViewModel;
public class GetQuestionViewModel
{
public IEnumerable<Question> Questions { get; set; }
public IEnumerable<QuestionOption> QuestionOptions { get; set; }
public int PageNumber { get; set; }
public int Id { get; set; }
public Nullable<int> Options { get; set; }
public string QuestionOption1 { get; set; }
public Nullable<int> QuestionOptionRanking { get; set; }
public string Question1 { get; set; }
public int QuestionTypeId { get; set; }
public Nullable<int> QuestionRanking { get; set; }
public string Answer { get; set; }
}
該視圖可容納4個問題類型;
@using Microsoft.AspNet.Identity
@model IEnumerable<Template.Models.GetQuestionViewModel>
@{
ViewBag.Title = "View question";
Html.BeginForm("ViewQuestion", "Question", FormMethod.Post, new { @class = "form-horizontal", role = "form" });
}
@foreach (var q in Model) { var qtype = q.QuestionTypeId;
<div>
@Html.AntiForgeryToken();
<h1>@q.Question1</h1>
</div>
<hr />
<div class="form-group">
@switch (qtype)
{
case 1:
// Textbox
@Html.TextArea("Answer", new { @class = "form-control", rows = "4", col = "5" });
break;
case 2:
// Dropdown
<select class="form-control" id="Answer" name="Answer">
@foreach (var item in q.QuestionOptions.OrderBy(o => o.QuestionOptionRanking))
{
<option value="@item.QuestionOption1">@item.QuestionOption1</option>
}
</select>
break;
case 3:
// Checkbox
<div class="checkbox">
@foreach (var item in q.QuestionOptions.OrderBy(o => o.QuestionOptionRanking))
{
<input type="checkbox" name="Answer" value="@item.QuestionOption1" /> @item.QuestionOption1<br />
}
</div>
break;
case 4:
// Radio buttons
foreach (var item in q.QuestionOptions.OrderBy(o => o.QuestionOptionRanking))
{
<div class="radio">
<label>
<input type="radio" name="Answer" value="@item.QuestionOption1" />
@item.QuestionOption1
</label>
</div>
}
break;
}
</div>
<input type="hidden" name="QuestionId" value="@q.Id" />
<input type="hidden" name="UserId" value="@User.Identity.GetUserId()" />
<input type="hidden" name="page" value="@q.PageNumber" />
}
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Answer" />
</div>
</div>
任何人都可以發現我出錯的地方嗎?
在此先感謝。
你使用的是Entity Framework嗎? –
是的,但我很新,可能沒有正確實施它.. – Alex
「'在調試過程中,我可以看到我的領域填寫'」,所以你的'問題'列表不是空的?你能顯示你的'View'代碼嗎? – vutran