我定义了一个模型:
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告诉系统特定商品属于哪个展览,以及该商品/展览组合的价格。
在我的Controller中,我正在填充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
中选择一个复选框。然后是一个文本框,输入项目的价格。
到目前为止,我有:
@foreach (var item in Model.Items)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Code)</td>
<td>@Html.DisplayFor(modelItem => item.Description)</td>
<td>@Html.CheckBoxFor(modelItem => item.AdditionalItem.Value, new { @disabled = "disabled" })</td>
<td>@Html.CheckBox("chkIsSelected")</td>
<td>@Html.Editor("txtPrice")</td>
</tr>
}
由于我是MVC的新手,因此我不知道如何在一个ExhibitionItem的复选框和Price文本框之间建立链接到Item的链接。换句话说,当我将更改提交到数据库时,我会使用项目ID和价格填充ExhibitionItems,具体取决于是否选中了复选框(“chkIsSelected”)。
此外,如果数据库中已有Exhibitems,我需要更改以获取复选框和Price填充?
答案 0 :(得分: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.
});
});
});
现在你必须将它读入你的控制器。这可以是部分视图,也可以是带有结果的正确视图。由你决定。无论如何,您将遍历数组并更新数组中存在的每个值。 e.g。
[ActionName("update-exhibition-item")]
public ActionResult UpdateExhibition(int[] items)
{
var list = from a in tableA
where items.Contains(a.id)
select a;
// etc.
}