一对多数据库模型中多个模型的CSHTML可编辑字段

时间:2019-09-29 13:20:45

标签: razor

我创建了一个将数据推送到数据库中两个表的表单。表单的标题信息在一个表中作为单个条目推送,然后在另一个表中作为引用第一个表中条目的行推送。一对多的关系。

我需要能够编辑表格中的信息。我可以将标头信息呈现到可编辑的字段中,但无法获取多行级别的信息。

这是我的模特:

using CustomerPortal.Identity.Models;
using Microsoft.AspNetCore.Mvc.Rendering;
using System;
using System.Collections.Generic;

namespace CustomerPortal.Models
{
    public class EventViewModel
    {
        public string CustomerPONumber { get; set; }
        public string SupplierReferenceNumber { get; set; }
        public string CarrierProNumber { get; set; }
        public IEnumerable<CarrierEventItem> CarrierEventItems { get; set; }
    }
}

IEnumerable引用CarrierEventItems表。

在CSHTML页面上,我可以将事件字段呈现为可编辑状态:

@model EventViewModel

<div class="list-item">
    <h3>Cust PO Number</h3>
        @Html.TextBoxFor(m => m.CustomerPONumber)
</div>

 @foreach (var carrierEventItem in @Model.CarrierEventItems)
     {

          <div class="list-item">
              <h3>Customer Item</h3>
              <ul>
                  <li>
                     Customer Item Number: @carrierEventItem.CustomerItemNumber
                  </li>
              </ul>
           </div>
     }

我无法使CarrierEventItem字段可编辑,而我只能显示它们。

我对HTML所做的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我能够轻松解决此问题,而不是在单独的html div中输入每个字段,Razor会自动将这些字段呈现为可编辑状态:

    <div class="col-12">
        @foreach (var carrierEventItem in @Model.CarrierEventItems)
            {

                <div class="list-item">
                    <h3>Customer Item</h3>

                    @Html.EditorFor(m => carrierEventItem)

                </div>
            }
     </div>