如何在不使用JavaScript的情况下将模态按钮的Model.ID传递到模态窗口
解决方案
核心结论
不需要用GET表单回传,无JavaScript的情况下,最直接的解决方式是给每个条目生成专属的模态框,让触发按钮只对应自己条目绑定的模态框。
问题原因
你当前的代码里只有一个模态框,所有按钮都指向同一个#staticBackdrop2,页面渲染时模态框里的@Model.ID只会被赋值一次(也就是第一个条目的ID),所以不管点哪个按钮,模态框显示的都是第一个ID。无JS的情况下无法动态修改已渲染好的模态框内容,必须让每个按钮对应独立的模态框。
具体实现
假设你是通过循环(比如foreach)渲染所有条目,给每个按钮和模态框设置带当前条目ID的唯一标识:
@foreach (var item in Model.Items) { <!-- 每个条目对应专属的触发按钮 --> <button type="button" data-bs-toggle="modal" data-bs-target="#staticBackdrop-@item.ID">删除</button> <!-- 每个条目对应专属的模态框 --> <div class="modal fade" id="staticBackdrop-@item.ID" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel-@item.ID" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h1 class="modal-title fs-5" id="staticBackdropLabel-@item.ID">删除确认</h1> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> 确定要删除ID为 @item.ID 的条目吗?此操作不可撤销。 </div> <div class="modal-footer"> <div> <form action="@Url.Action("DeleteLesson","Lesson", new{ID = item.ID})" method="post"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button> <button type="submit" class="btn btn-danger">删除</button> </form> </div> </div> </div> </div> </div> }
补充说明
- 每个模态框的
id和按钮的data-bs-target用@item.ID做后缀,保证唯一对应 - 模态框内的文本和表单提交地址都使用当前条目的
item.ID,确保数据准确 - 这种方式不需要额外的表单回传或页面跳转,完全靠服务器端渲染完成所有内容绑定
内容的提问来源于stack exchange,提问作者user20654632
相关产品推荐
相关产品推荐

