2013-02-17 67 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. 
} 
相关问题