【问题标题】:ASP.NET Core MVC viewmodel property on post is empty帖子上的 ASP.NET Core MVC 视图模型属性为空
【发布时间】:2021-09-03 08:28:38
【问题描述】:

我有这个 html:

<div class="row">
    <div class="col-md-12">
        @if (Model.PendingTransactions != null)
        {
            <table>
                <thead>
                    <tr>
                        <th class="text-center">Select</th>
                        <th class="text-center">@Html.DisplayNameFor(m => m.PendingTransactions.First().transactionDate)</th>
                        <th class="text-center">@Html.DisplayNameFor(m => m.PendingTransactions.First().debtId)</th>
                        <th class="text-center">@Html.DisplayNameFor(m => m.PendingTransactions.First().batchId)</th>
                        <th class="text-center">Delete</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach (var transaction in Model.PendingTransactions)
                    {
                        <tr id="row_@transaction.transactionBatchId">
                            <td>
                                @Html.CheckBoxFor(m => transaction.selectedForProcessing)
                                @Html.HiddenFor(m => transaction.selectedForProcessing)
                            </td>
                            <td class="text-center">@Html.DisplayFor(m => transaction.transactionDate)
                            @Html.HiddenFor(m => transaction.transactionDate)
                            </td>
                            <td class="text-center">
                                @Html.DisplayFor(m => transaction.debtId)
                            </td>
                            <td class="text-center">@Html.DisplayFor(m => transaction.transactionBatchId)</td>
                            <td><a onclick="deleteTransaction(@transaction.transactionBatchId)" href="#"><i class="bi bi-trash" aria-hidden="true"></i></a>
                            </td>
                        </tr>
                    }
                </tbody>
            </table>

            <div class="row">
                <div class="col-md-12">
                    <input type="submit" class="btn btn-success float-right" />
                </div>
            </div>
        }
    </div>
</div>

对于这个模型:

public class PendingTransactionsViewModel
{
    public List<PendingTransactionViewModel> PendingTransactions { get; set; } = new();
}

public class PendingTransactionViewModel
{
    public int? transactionBatchId { get; set; }
    public int? debtId { get; set; }
    public DateTime? transactionDate { get; set; }
    public bool selectedForProcessing { get; set; } = false;
}

虽然我能够操作视图上的复选框,但当我回发模型属性 PendingTransactions 时,它并没有回发到控制器。为了将列表恢复到控制器中,我缺少什么?

【问题讨论】:

  • 您拥有 ASP.NET MVC(在完整的经典 .NET 框架上)以及 ASP.NET Core MVC - 您真正使用的是哪一个 -还是你真的需要两者的支持??
  • 这是.net core mvc
  • @Laziale 不要让您感到困惑,因为您没有像在欺骗中那样使用自定义模板。根本问题是相同的,foreach (var transaction in Model.PendingTransactions)m =&gt; transaction.* 是阻碍它的原因。解决方法也是一样的。

标签: asp.net-mvc .net-core asp.net-core-mvc


【解决方案1】:

尝试用for循环替换foreach循环

@for (var i=0; i< Model.PendingTransactions.Count; i+=1)
                    {
  <tr id="row_@Model.PendingTransactions[i].transactionBatchId">
   <td>
  @Html.CheckBoxFor(m => m.PendingTransactions[i].selectedForProcessing)
@Html.HiddenFor(m => m.PendingTransactions[i].selectedForProcessing)
  </td>
   <td class="text-center">
     @Html.DisplayFor(m => m.PendingTransactions[i].transactionDate)
    @Html.HiddenFor(m => m.PendingTransactions[i].transactionDate)
    </td>
.....
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2020-10-17
    相关资源
    最近更新 更多