【问题标题】:Passing model to a partial view that is used for modal将模型传递给用于模态的局部视图
【发布时间】:2020-06-29 04:17:48
【问题描述】:

我试图通过动态传递模型对象来打开引导模式。模态内容部分视图如下,

@model int

<div class="modal fade" id="modal-action-id" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel"></h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true"></span>
                </button>
            </div>
            <div class="modal-body">
                <form>
                    <input type="text" value="@Model" />
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal" >cancel</button>
                <button type="button" class="btn btn-danger" data-dismiss="modal" >delete</button>
            </div>
        </div>
        </div>
 </div>

而且,这是我的 div,它通过动态传递模型对象来打开模式,

<div>
    @{
        for (int i = 5; i > 0; i--)
        {
            <div>
                <button id="deleteModal-@i" type="button" class="btn btn-danger" data-toggle="modal" data-sid="@i" data-target="#modal-action-id">
                    <i class="fa fa-trash-o pr-2" aria-hidden="true"></i>Delete @i
                </button>
                @await Html.PartialAsync("_MyPartialView", i)
            </div>

        }

    }

</div>

现在,问题是无论我在这里单击哪个按钮,它都只会将值 5 传递给局部视图。此外,我只看到了 for 循环之外的 @await Html.PartialAsync() 部分代码将静态模型传递给不同应用程序中的局部视图。从概念上讲,我在这里遗漏了什么吗?任何建议将不胜感激。

【问题讨论】:

    标签: asp.net-mvc asp.net-core c#-4.0 bootstrap-modal


    【解决方案1】:

    原因是所有_MyPartialView 都在同一个id id="modal-action-id",这就是为什么你点击任何按钮只显示相同的_MyPartialView

    您可以更改按钮data-target="#modal-action-@i"

    <button id="deleteModal-@i" type="button" class="btn btn-danger" data-toggle="modal" data-sid="@i" data-target="#modal-action-@i">
    

    并更改 div id="modal-action-@Model"

    <div class="modal fade" id="modal-action-@Model" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    

    然后,你可以得到你想要的。所有测试。

    【讨论】:

    • 感谢@Michelle 提供的有效解决方案。在仔细检查了部分视图如何与模态一起工作之后,最好避免这种方法,因为它会为循环中与模态关联的每个按钮生成 HtmlContent。而且,如果循环运行更多次,这将导致性能问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2014-02-05
    • 2014-06-28
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多