ASP.NET Core中多选值无法传递至控制器问题求助
问题:Multiselect多选值无法传入数据库,Clusters始终为null
我尝试用Multiselect多选功能选择多个值并存入数据库,但始终失败,Clusters字段一直是null。
模型多对多关系
public class Cluster : IEntityBase<string> { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public string Id { get; set; } [Required] public string Name { get; set; } public IEnumerable<Sensor> Sensors { get; set; } }
public class Sensor : IEntityBase<string> { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public string Id { get; set; } public string Name { get; set; } public IEnumerable<Cluster> Clusters { get; set; } [ForeignKey("SensorType")] public string SensorTypeId { get; set; } public SensorType SensorType { get; set; } }
仓储模式代码
private readonly ApplicationDbContext _db; public SensorRepository(ApplicationDbContext db) { _db = db; } public void Add(SensorVM entity) { Sensor mappedSensor = new Sensor() { Id = entity.Id, Name = entity.Name, Clusters = entity.Clusters, SensorTypeId = entity.SensorTypeId, SensorType = entity.SensorType, APIUrl = entity.APIUrl, X = entity.X, Y = entity.Y, Configuration = entity.Configuration, ConfigurationSchema = schema.ToJson(), SerialNumber = entity.SerialNumber, Interval = entity.Interval, IsActive = entity.IsActive }; _db.Sensors.Add(mappedSensor); _db.SaveChanges(); }
控制器代码
[HttpGet] public IActionResult Add() { IEnumerable<Cluster> getClusters = _clusterRepository.GetAll().ToList(); ViewData["Clusters"] = new MultiSelectList(getClusters, "Id", "Name"); ... return View(); } [HttpPost] public IActionResult Add(SensorVM obj) { if (ModelState.IsValid) { _sensorRepository.Add(obj); return RedirectToAction("Index"); } return View(obj); }
视图代码
<div class="form-floating py-2 col-12"> <select asp-for="Clusters" asp-items="(MultiSelectList)@ViewData["Clusters"]" multiselect-search="true" multiple placeholder="-Select Clusters-"> <span asp-validation-for="Clusters" class="text-danger"></span> </select> </div>
我怀疑是缺少ID列表处理逻辑,或是没给MultiSelectList的selectedValues参数赋值。数据库已经通过多对多关系生成了包含SensorId和ClusterId的ClusterSensor中间表。
内容的提问来源于stack exchange,提问作者glidziR99
相关产品推荐
相关产品推荐

