如何在循环中设置 asp-items 和 asp-for

Posted

技术标签:

【中文标题】如何在循环中设置 asp-items 和 asp-for【英文标题】:How to set asp-items and asp-for in a loop 【发布时间】:2021-09-11 19:44:42 【问题描述】:

任何人都可以帮助我使用语法(如果可行的话)在循环中动态设置 asp-items 参数吗? 基本上,我的 ViewBag 有 Q1、Q2、Q3 项目。其中每一个都有一个用于下拉列表的 selectList。 我正在遍历 Model.Questions 中的所有问题,并且对于这些问题中的每一个问题,我都需要获取存储在 ViewBag 中的选择下拉列表。所以它会是 ViewBag.Q1,然后是 ViewBag.Q2 等。我尝试构造一个字符串“ViewBag.@questionId”,但我收到一个关于类型的错误(当它需要一个列表时是字符串)。

希望你能帮上忙!

        @foreach (var question in Model.Questions) //For every question, generate question, and generate responses
        
            <div class="form-row">
                <label class="control-label col-md-4">@question.QuestionText</label>
                @if (question.QuestionResponse.Count() != 0) //If count ViewData[QID] != 0, generate select dropdown, otherwise, input.
                                            
                    var questionId = "Q"+question.QuestionId.ToString();
                    
                    <select class="form-control col-md-4" asp-items="ViewBag.???"><option></option></select>
                    
                

                else
                
                    <input class="form-control col-md-4" />
                
            </div>
        

【问题讨论】:

【参考方案1】:

您可以尝试如下更改您的代码。

   var questionId = "Q" + question.QuestionId.ToString();

   <select class="form-control col-md-4" asp-items="(SelectList)ViewData[questionId]"><option></option></select>

【讨论】:

以上是关于如何在循环中设置 asp-items 和 asp-for的主要内容,如果未能解决你的问题,请参考以下文章

字符串数组的本地化(asp-items)

如何在 for 循环中设置 asp-for

如何在asp.net核心的for循环中使用linqkit

asp.net 如何在网页中用while循环出datatable的数据?

asp.net中如何输出数据?

使用没有角色的用户呈现 SelectList