【问题标题】:.NET MVC view returning object name rather than specific object.NET MVC 视图返回对象名称而不是特定对象
【发布时间】:2023-04-04 18:00:01
【问题描述】:

我将列表列表返回到 MVC 视图,显示为一组表。我正在使用嵌套的 for 循环来尝试返回每个列表中的值。

这些表返回到视图中的每个行都具有预期的行数,但不是每行中的值,而是返回其参数的名称,而不是每个参数的实际值。

目前我认为的代码是:

@if (Model.Report != null)
        {
            for(var row = 0; row < Model.Report.Count(); row++)
            {
                <table>
                    <tr>
                        <td><h4>@Html.DisplayNameFor(m=>m.Report[row].ReportData[row].ReportingGroup)</h4></td>
                    </tr>
                    <tr class="table-header">
                        <td style="text-align: center">Name</td>
                        <td style="text-align: center">Area</td>
                        <td style="text-align: center">Message</td>
                    </tr>

                    @for (var listing = 0; listing < Model.Report[row].ReportData.Count(); listing++)
                    {
                        <tr>
                            <td style="text-align: center">@Html.LabelFor(a=>a.Report[row].ReportData[listing].Name)</td>
                            <td style="text-align: center">@Html.LabelFor(a => a.Report[row].ReportData[listing].Area)</td>
                            <td style="text-align: center">@Html.LabelFor(a => a.Report[row].ReportData[listing].Message)</td>

                        </tr>
                    }
                </table>
            }
       }

我将参数名称(“名称”、“区域”和“消息”)返回给每个视图,而不是返回到视图中每一行的参数的实际值。我想知道我哪里出错了。

【问题讨论】:

    标签: c# .net asp.net-mvc razor


    【解决方案1】:

    LabelFor 为您传递的属性显示一个标签。没有其他属性,这只是属性名称。

    您只想打印值本身:

    @Model.Report[row].ReportData[listing].Message
    

    您应该用foreach 替换您的for 循环,这样您就不需要做所有这些了。

    【讨论】:

      【解决方案2】:

      在 for 循环中将 LabelFor 更改为 DisplayForTextBoxFor

      【讨论】:

        猜你喜欢
        • 2015-04-13
        • 1970-01-01
        • 2020-11-01
        • 2014-12-03
        • 2017-12-28
        • 2021-06-22
        • 1970-01-01
        • 2021-10-06
        相关资源
        最近更新 更多