2016-08-17 53 views
0

我有一個帶複選框的表單並將它們發回控制器並將它們保存爲SQl服務器數據庫,值爲System.String []。一直在四處尋找論壇尋找解決方案,將陣列作爲所選設備的列表輸出,但沒有找到任何東西。將數組懸停在控制器參數中時,表格中選定的所有值都會列出並且是正確的。將數組值保存爲數據庫中的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 []

+0

「EquipmentRequested」的類型是什麼?你想將數組解析爲什麼? – Shyju

回答

2

你試圖使用toString在字符串數組當你做

equipment.ToString() 

我不知道你的目的是什麼與.ToString ()電話,但是你的錯誤。

訂單應該包含的

ICollection<EquipmentRequested> EquipmentRequested { get; set; } 

代替

string EquipmentRequested { get; set; } 

和EquipmentRequested應包含字符串屬性 '價值' 和的OrderId的對象鏈接。

+0

對。當我刪除.ToString()時,我得到一個錯誤,不能隱含地將類型字符串[]轉換爲字符串。 –

+0

您需要弄清楚如何將設備記錄存儲在數據庫中,併爲此建立正確的數據模型。現在缺少這個,這是你問題的根源。 – Noppey

+0

我的猜測是該訂單應該有一個字符串ICollection作爲EquipmentRequested而不是單個字符串 – Noppey