数组值在数据库中保存为System.String []

时间:2016-08-17 17:38:12

标签: c# asp.net-mvc

我有一个带有复选框的表单并将它们发布回控制器并将它们保存为SQl Server数据库,值为System.String []。一直在寻找一个解决方案来寻找一个解决方案输出数组作为一个选定的设备列表,但没有找到任何东西。将数组悬停在控制器参数中时,列出并正确选择在表单中选择的所有值。

 <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");
    }

我坚持如何将数组解析为列表以正确保存到数据库而不是System.String []

1 个答案:

答案 0 :(得分:2)

当您执行

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

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

订单应包含

ICollection<EquipmentRequested> EquipmentRequested { get; set; }

而不是

string EquipmentRequested { get; set; }

和EquipmentRequested应包含字符串属性&#39; value&#39;和一个OrderId来链接对象。