2013-02-17 68 views
0

我有定義的模型:如何將模型中的兩個集合鏈接到視圖?

public class ExhibitionItemModel 
{ 
    public IEnumerable<tblItem> Items { get; set; } 
    public tblExhibition Exhibition { get; set; } 
    public IEnumerable<tblExhibitionItem> ExhibitionItems { get; set; } 
} 

tblItem包含關於特定項目,例如,描述,代碼等信息 tblExhibitionItem包含來自tblItem的ID,一個展覽ID告訴爲其exhibitionm特定系統項目所屬,以及該項目/展覽組合的價格。

在我的控制,我填充ExhibitionItemModel:

ExhibitionItemModel exhibitionItemModel = new ExhibitionItemModel(); 
exhibitionItemModel.Exhibition = db.tblExhibitions.Find(id); 
exhibitionItemModel.ExhibitionItems = (from objExhibitionItems in db.tblExhibitionItems 
               where objExhibitionItems.ExhibitionID == id 
               select objExhibitionItems).AsEnumerable<tblExhibitionItem>(); 

exhibitionItemModel.Items = (from objItem in db.tblItems 
            select objItem).OrderBy(item => item.Code).AsEnumerable<tblItem>(); 

return View(exhibitionItemModel); 

林我的看法,我列出所有的項目,我想有哪些根據項目是否處於選中tblExhibitionItem一個複選框。然後在文本框中輸入物品的價格。

到目前爲止,我有:

​​

我作爲一個新手到MVC,我堅持,我怎麼建立的複選框和價格文本框之間的鏈接的ExhibitionItem到該項目的。換句話說,當我將更改提交給數據庫時,我將根據是否選中複選框(「chkIsSelected」),用Item和Price的ID填充ExhibitionItem。

此外,如果數據庫中已經有了展覽項目,我需要更改哪些內容才能獲取複選框和價格?

回答

0

您可以使用ajax來實現這一點。

你需要弄清楚什麼是複選框。因此,鏈接它的最佳方法是使用ID

所以,你的複選框的代碼可能是這樣的:

<td>@Html.CheckBox("chkIsSelected", new { @value = item.ID })</td> 

現在你使用jQuery來獲取選擇複選框ID數組,並傳遞到控制器。

$('#submitButton').click(function(e) { 
    e.preventDefault(); 
    var selectedItems = new Array(); // Create Array 

    // Add to array 
    $('#chkIsSelected:checked').each(function() { selectedItems.push($(this).val()); }); 

    $.ajax({ 
      url: '/update-exhibition-item', 
      data: { items: selectedItems }, 
      traditional: true, 
      success:function (data) { 
       // do something. 
      }); 
    }); 

}); 

現在您必須將其讀入控制器。這可能是一種偏見,也可能是一種有結果的正確觀點。隨你便。無論如何,你要循環訪問數組並更新數組中存在的每個值。例如

[ActionName("update-exhibition-item")] 
public ActionResult UpdateExhibition(int[] items) 
{ 
    var list = from a in tableA 
       where items.Contains(a.id) 
       select a; 
    // etc. 
} 
相關問題