[英]Asp.net core how to display IEnumerable model one by one
I have an IEnumerable model that want to show in one by one item in view.我有一个 IEnumerable 模型,想要在视图中一一显示。
public IActionResult Index()
{
var model = _context.Question.ToList();
return View(model);
}
I have a view similar to the one below.我有一个类似于下面的观点。 I want the next and previous items to be displayed by pressing the next and previous button
我希望通过按下下一个和上一个按钮来显示下一个和上一个项目
And this is my view这是我的观点
<div>
<p>
@foreach (var item in Model.Take(1))
{
@Html.Raw(item.QuestionContent)
foreach (var item2 in item.Answers)
{
@Html.Raw(item2.AnswerContent)
<input type="checkbox" />
}
}
</p>
<div>
<a id="btnnext" class="btn">
Next
</a>
<a id="btnprev" class="btn">
Prev
</a>
</div>
Here is a whole working demo you could follow:这是您可以遵循的完整工作演示:
Model:模型:
public class Question
{
public int Id { get; set; }
public string QuestionContent { get; set; }
public List<Answer> Answers { get; set; }
}
public class Answer
{
public int Id { get; set; }
public string AnswerContent { get; set; }
}
View:看法:
@model IEnumerable<Question>
@{
int current = (int)ViewBag.CurrentIndex;
}
<div>
<p>
@Html.Raw(Model.ElementAt(current).QuestionContent)
@foreach (var item in Model.ElementAt(current).Answers)
{
@Html.Raw(item.AnswerContent)
<input type="checkbox" />
}
</p>
@{
var prevDisabled = !(bool)ViewBag.HasPreviousPage ? "disabled" : "";
var nextDisabled = !(bool)ViewBag.HasNextPage ? "disabled" : "";
}
<a asp-action="Index"
asp-route-index="@ViewBag.PreviousIndex"
class="btn btn-default @prevDisabled">
Previous
</a>
<a asp-action="Index"
asp-route-index="@ViewBag.NextIndex"
class="btn btn-default @nextDisabled">
Next
</a>
</div>
Controller:控制器:
public IActionResult Index(int index)
{
var model = _context.Question.ToList();
ViewBag.CurrentIndex = index;
ViewBag.PreviousIndex = index - 1;
ViewBag.NextIndex = index + 1;
ViewBag.HasPreviousPage = ViewBag.PreviousIndex == -1 ? false : true;
ViewBag.HasNextPage = ViewBag.NextIndex == model.Count() ? false : true;
return View(model);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.