如何为 IEnumerable 中的每个项目打开一个唯一的模式

Posted

技术标签:

【中文标题】如何为 IEnumerable 中的每个项目打开一个唯一的模式【英文标题】:How to open a unique modal for each item in IEnumerable 【发布时间】:2020-09-14 16:47:53 【问题描述】:

我的视图中有一个 IEnumerable 数据正在循环,每个项目都有一个“更多信息”按钮,该按钮会弹出一个模式,该模式应包含每个项目特定的数据。现在,无论我点击哪个项目的按钮,我都会得到列表中第一个项目的属性。

打开模态按钮后的代码如下所示:

<div class="modal" id="exampleModal" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            </div>
            <div class="modal-body">
                @item.Property1 // showing as the same for each item
            </div>

【问题讨论】:

【参考方案1】:

其中一个可能的原因是,您在模态列表的每个项目中都使用了相似的 id(即“exampleModal”)。您应该在 id 中附加一些独特的东西来定义您的项目。像这样改变:

<div class="modal" id="exampleModal-@item.Property1" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">                                                                
        </div>
        <div class="modal-body">
            @item.Property1 // showing as the same for each item
        </div>
    </div>
</div>

这样,模态将被唯一标识。

【讨论】:

感谢您的回答。我尝试这样做,不幸的是,当以这种方式分配 id 时,模式不会打开。我仔细检查了目标和模式 id 是否匹配,但无论出于何种原因,它仍然无法打开。我最终使用了一个向下滑动的 div 来显示内容,它按预期工作。我知道我本可以让它与 Ajax 一起工作,但对于已经渲染的数据来说,这似乎有点过头了。

以上是关于如何为 IEnumerable 中的每个项目打开一个唯一的模式的主要内容,如果未能解决你的问题,请参考以下文章

如何为 QComboBox 中的每个项目添加价值 [重复]

如何为数组/ JavaScript中的每个项目创建不同的按钮

如何为 IText Fabricjs 中的每个项目设置绝对位置

如何为 Laravel ORM 中每个组中的单个项目执行 groupBy()

Angular 项目:如何为现有组件树中的每个组件添加模块?

如何为 JSON 文件中的每个项目呈现一个反应组件?