保存为System的数组值.数据库中的字符串[]

本文关键字:字符串 数据库 System 数组 保存 | 更新日期: 2023-09-27 18:02:52

我有一个带有复选框的表单,并将它们发送回控制器并将它们保存为SQl Server数据库,值是System.String[]。一直在论坛周围寻找一个解决方案,以输出阵列回到所选设备的列表,但没有找到任何东西。当将数组悬停在controller参数中时,表单中选择的所有值都会被列出并且是正确的。

 <div class="checkbox">
   <label>
   <input type="checkbox" name="equipmentCheckbox" id="pc" value="PC">PC
   </label>
  </div>
<div class="checkbox">
   <label>
  <input type="checkbox" name="equipmentCheckbox" id="monitor" value="Flat Panel Monitor">Monitor
   </label>
   </div>
<div class="checkbox">
   <label>
  <input type="checkbox" name="equipmentCheckbox" id="mic" value="mic">Mic
   </label>
 </div>
<div class="checkbox">
   <label>
  <input type="checkbox" name="equipmentCheckbox" id="speakers" value="speakers">Speakers
   </label>
 </div>
<div class="checkbox">
   <label>
  <input type="checkbox" name="equipmentCheckbox" id="videoPlayer" value="videoPlayer">Video player
   </label>
 </div>
<div class="checkbox">
   <label>
  <input type="checkbox" name="equipmentCheckbox" id="lab" value="lab">Lab
   </label>
 </div>

控制器:

[HttpPost]
    public ActionResult equipmentRequest(string[] equipmentCheckbox) 
    {
        var db = new Entities();

        string[] equipment = Request.Form.GetValues("equipmentCheckbox");
        var order = new Order
        {
            EquipmentRequested = equipment.ToString(),
        };
        db.Requests.Add(order);
        db.SaveChanges();

        return RedirectToAction("Index");
    }

我卡住了如何解析数组到一个列表,以正确地保存到数据库,而不是系统。String []

保存为System的数组值.数据库中的字符串[]

当您执行

操作时,您正在尝试在字符串数组上使用toString
equipment.ToString() 

我不知道你的目的是什么。tostring()调用,但这是你的错误。

订单中应包含

ICollection<EquipmentRequested> EquipmentRequested { get; set; }

代替

string EquipmentRequested { get; set; }

和EquipmentRequested应该包含一个字符串属性'value'和一个OrderId来链接对象。