Я работаю над веб-приложением, использующим Asp.Net Core 2.2 MVC и Entity Framework, с которым я довольно плохо знаком.
Я пытаюсь выполнить процесс, в результате которого пользователь создает инцидент и представляетсяс вопросом, если ответ «да», страница загрузится, но если ответ «нет», появится следующий вопрос.
Я использую модель представления для сохранения своих вопросов в виде списка.Как лучше всего возвращать первый вопрос, чтобы я мог повторять каждый из них при нажатии кнопки?
Моя модель представления выглядит следующим образом:
public class PathwayViewModel
{
public List<StageQuestion> StageQuestion{ get; set; }
public Incident Incident { get; set; }
}
и мой класс модели StageQuestion имеет видследует
public class StageQuestion
{
// PK
public int Id { get; set; }
// FK to Incident Type
public int IncidentTypeId { get; set; }
// FK to Stage
public int StageId { get; set; }
public string QuestionText { get; set; }
public virtual IncidentType IncidentType { get; set; }
public virtual Stage Stage { get; set; }
}
Мой метод контроллера следующий:
public IActionResult Pathway (int? id)
{
PathwayViewModel path = new PathwayViewModel();
var incident = _context.Incident
.Include(i => i.IncidentType)
.FirstOrDefault(m => m.Id == id);
path.Incident = incident;
var stageQuestions = _context.StageQuestion.Where(x => x.IncidentTypeId == incident.IncidentTypeId)
.Include(s => s.Stage)
.Include(o => o.Stage.Outcome)
.ToList();
path.StageQuestion = stageQuestions;
return View(path);
}
Мой HTML выглядит следующим образом:
@model Path2019.ViewModels.PathwayViewModel
@{
ViewData["Title"] = "Pathway";
}
<h1>Pathway</h1>
<table class="table">
<thead>
<tr>
<th>
Stage text
</th>
<th>
Question Text
</th>
<th>
Type of Incident
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.StageQuestion)
{
<tr>
<td>
@Html.DisplayFor(ModelItem => item.Stage.StageName)
</td>
<td>
@Html.DisplayFor(ModelItem => item.QuestionText)
</td>
<td>
@Html.DisplayFor(ModelItem => item.IncidentType.Type)
</td>
</tr>
}
</tbody>
</table>