asp.net-core - 从带有 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>
任何人都知道我该如何实现?
解决方案
推荐阅读
- google-chrome-extension - 在 Visual Studio Code 中调试 Chrome 扩展
- sql - NOSQL 数据库对百万行有用吗
- html - CSS Grid Column中的元素,上边距表现为位置top
- amazon-web-services - AWS Glue ApplyMapping 从双精度到字符串
- angular - 从 BehaviorSubject 中删除重复项
- angular - 无法在角度组件文件中设置动态版本
- r - 在 R 中查找唯一对(不重复任何值)
- r - R:从在线源导入多个文件
- qt - 如何在图形视图上移动 qwidget?
- firebase - Firebase +Vue.js 中的 updateProfile()