显示列表并在列表中添加新项目 asp.net core

Posted

技术标签:

【中文标题】显示列表并在列表中添加新项目 asp.net core【英文标题】:Display a list and add new item in on list asp.net core 【发布时间】:2022-01-13 15:36:15 【问题描述】:

我想创建一个视图,该视图将在表格上方和下方的表格中显示一个列表,以将新项目输入到同一列表中,但我收到此错误:

InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“System.Collections.Generic.List`1[NAOC_ROW.Models.tbContPaymentHist]”,但此 ViewDataDictionary 实例需要类型为“NAOC_ROW.Models.tbContPaymentHist”的模型项'。

这里是风景

    @model IEnumerable<NAOC_ROW.Models.tbContPaymentHist>

@
    ViewData["Title"] = "Payment List";
   
<section class="content">
    <div class="container-fluid">

        <h3> Payment History</h3>
        <hr />

        <div class="row">
            <div class="col-md-12">
                <div class="card card-primary card-outline">
                    <div class="card-header">
                        <h3 class="card-title">
                            <i class="fas fa-edit"></i>
                            Last Completed Payments
                        </h3>
                    </div>
                    <div class="card-body pad table-responsive">

                        @if (Model.Count() > 0)
                        

                            @*scrolling bootstarp table, check css in top of this page*@
                            <div class="table-wrapper-scroll-y my-custom-scrollbar">

                                <table class="table table-bordered table-striped mb-0">
                                    <thead>
                                        <tr>
                                            <th scope="col">
                                                @html.DisplayNameFor(model => model.Datepaid)
                                            </th>
                                            <th scope="col">
                                                @Html.DisplayNameFor(model => model.Amtpaid)
                                            </th>
                                            <th scope="col">
                                                @Html.DisplayNameFor(model => model.Balance)
                                            </th>
                                        </tr>
                                    </thead>
                                    <tbody>

                                       
                            </div>
                        
                        else
                        
                            <h5>No payments completed yet</h5>
                        

                    </div>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-md-12">
                <div class="card card-cyan card-outline">
                    <div class="card-header">
                        <h3 class="card-title">
                            <i class="fas fa-edit"></i>
                            Add New Payment
                        </h3>
                    </div>

                    <div class="card-body pad table-responsive">
                        
                        <p><strong>Monthly payments:</strong> &#x20A6;@String.Format("0:#,##0.00", @ViewBag.expected)</p>
                        <p><strong>Current balance:</strong> &#x20A6;@String.Format("0:#,##0.00", @ViewBag.bal)</p>
                        
                        @*<input type="hidden" asp-for="@Model.ContractId" />*@
                        <hr />


                           
                </div>
            </div>
        </div>
    </div>

    <div class="modal fade" id="modal-info">
        <div class="modal-dialog">
            <div class="modal-content bg-info">
                <div class="modal-header">
                    <h4 class="modal-title">Info Modal</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <p>One fine body&hellip;</p>
                    <input type="hidden" value="@ViewBag.bal" name="AmtExpected" />
                    <partial name="_AddNewPayment" />
                </div>
                <div class="modal-footer justify-content-between">
                    <button type="button" class="btn btn-outline-light" data-dismiss="modal">Close</button>
                    <button type="button" class="btn btn-outline-light">Save changes</button>
                </div>
            </div>
            <!-- /.modal-content -->
        </div>
        <!-- /.modal-dialog -->
    </div>
    <!-- /.modal -->

</section>

@section Scripts
    @
        <partial name="_ValidationScriptsPartial" />
    

如您在脚本中看到的那样,我创建了一个局部视图,希望消除错误,但仍然无法正常工作。我取出了部分代码,以减少您阅读代码的时间。我留下了必要的代码。

欢迎任何帮助。

【问题讨论】:

您必须发布操作以显示用于创建视图模型的代码 你能提供你的动作、模型和原始视图代码吗? 【参考方案1】:

根据错误信息,您将List&lt;Model&gt; 类型的值传递给Paritl 视图并在部分视图中使用@model.xxx.Model。所以你可以像这样更改一些代码:

第一种方式:可以在局部视图中使用@model IEnumerable&lt;NAOC_ROW.Models.tbContPaymentHist&gt;

第二种方式:需要将模型传递给局部视图 &lt;partial name="_AddNewPayment" model="new tbContPaymentHist()"/&gt;

【讨论】:

谢谢。工作完美。我用的是第二种方法:The second way : you need to pass a model to the partial view &lt;partial name="_AddNewPayment" model="new tbContPaymentHist()"/&gt;

以上是关于显示列表并在列表中添加新项目 asp.net core的主要内容,如果未能解决你的问题,请参考以下文章

在 ASPX 页面(ASP.NET 站点)的网格内显示来自共享点列表的内容

谷歌驱动器重定向 URI 不匹配以及如何从 ASP.net 核心 2.0 中的谷歌驱动器获取文件列表

在 asp .NET MVC 中提交表单之前动态地将项目添加到列表中

在asp.net的html表中添加下拉列表

如何为asp.net中的每个项目添加复选框列表的工具提示

asp.net中复选框列表中的滚动条