asp.net core如何一一显示IEnumerable模型

Posted

技术标签:

【中文标题】asp.net core如何一一显示IEnumerable模型【英文标题】:Asp.net core how to display IEnumerable model one by one 【发布时间】:2021-12-06 07:02:34 【问题描述】:

我有一个 IEnumerable 模型,想要在视图中逐项显示。

   public IActionResult Index()
   
       var model = _context.Question.ToList();
       return View(model);
   

我的观点类似于下面的观点。我希望通过按下一个和上一个按钮来显示下一个和上一个项目

这是我的观点

   <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>

【问题讨论】:

【参考方案1】:

这是一个完整的工作演示,您可以关注:

型号:

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; 

查看:

@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>

控制器:

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);

【讨论】:

以上是关于asp.net core如何一一显示IEnumerable模型的主要内容,如果未能解决你的问题,请参考以下文章

使用 ASP.NET Core MVC,如何显示图像?

Asp.Net Core:如何使浏览器在发送之前显示文件正在下载

如何在 asp.net core .NET6(Razor 页面)中的单个 cshtml 中显示来自多个表/模型的数据

我如何在登录 asp.net core razor 之前显示加载图标或禁用按钮

如何使用 MS 数据库(ASP.NET Core MVC)通过表格显示信息?

如何在 ASP.NET Core MVC 中请求和显示实时 Web api 数据?