首页 > 解决方案 > 从带有 EF Core 的 asp.net 核心中的视图插入到多对多关系

问题描述

所以我在我的 ASP.net Core 应用程序中有一个视图,我添加了一个新的汽车维修,我还想在这个模型中添加零件。数据库有 3 个表:Repair - Parts - RepairParts。

我已经设法创建了新的修复,但我不知道如何将此视图中的零件列表传递给控制器​​并将它们插入到 RepairParts 表中。

维修班

    public class Repair
    {
        [Key]
        public int RepairId { get; set; }

        public int VehicleId { get; set; }

        public string Notes { get; set; }

        public string Mileage { get; set; }

        public DateTime RepairDate { get; set; }

        public string uuid { get; set; }

        [ForeignKey("VehicleId")]
        public Vehicle Vehicle { get; set; }

        public virtual ICollection<RepairParts> Parts { get; set; }
    }

零件类

public class Part
{
    public int PartId { get; set; }
    public int Code { get; set; }
    public string PartCode { get; set; }
    public string Type { get; set; }
    public string Name { get; set; }
    public string Descr { get; set; }
    public string Manufacturer { get; set; }
    public string uuid { get; set; }

    public virtual ICollection<RepairParts> Repairs { get; set; }
}

维修零件类

public class RepairParts
{
    public int RepairId { get; set; }
    public virtual Repair Repair { get; set; }

    public int PartId { get; set; }
    public virtual Part Part { get; set; }

}   

维修控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult 
    Create([Bind("VehicleId,Mileage,RepairDate,Notes")] RepairCreateModel repair)
    {
        try
        {
            Repair rep = new Repair();

            var NewRepair = _mapper.Map(repair, rep);

            _repairService.Add(NewRepair);


        }
        catch (Exception)
        {
            throw;

        }
        return Ok();
    }

维修服务

    public void Add(Repair repair)
    {
        string userid = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;

        repair.uuid = userid;
        _context.Repairs.Add(repair);
        _context.SaveChanges();
    }

修复创建视图

<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>

<input asp-for="VehicleId" value="@ViewBag.VehicleId" type="hidden" />

<div class="form-group row">
    <label class="col-sm-1 col-form-label">Owner</label>
    <div class="col-sm-2">
        <input type="text" class="form-control" value="@ViewBag.Owner" 
readonly>
    </div>
</div>

<div class="form-group row">
    <label class="col-sm-1 col-form-label">Vehicle</label>
    <div class="col-sm-2">
        <input type="text" class="form-control" value="@ViewBag.Vehicle" 
readonly>
    </div>

    <label class="col-sm-2 col-form-label">Licence Plates</label>
    <div class="col-sm-2">
        <input type="text" class="form-control" 
value="@ViewBag.LicencePlates" readonly>
    </div>
</div>
<div class="form-group row">

    <label class="col-sm-1 col-form-label">Mileage</label>
    <div class="col-sm-2">
        <input asp-for="Mileage" type="text" class="form-control">
    </div>

    <label class="col-sm-2 col-form-label">Date:</label>
    <div class="col-sm-2">
        <input asp-for="RepairDate" type="text" class="form-control">
    </div>
</div>

<div class="form-group row">

    <label class="col-sm-1 col-form-label">Notes</label>
    <div class="col-sm-8 row">
        <textarea asp-for="Notes" rows="5" class="form-control"></textarea>
    </div>
</div>


    <div class="form-group row">
        <input type="submit" value="Create" class="btn btn-primary" />
    </div>

</form>

任何人都知道我该如何实现?

标签: asp.net-coremany-to-manyentity-framework-core

解决方案


推荐阅读