0

我定义了一个模型:

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

tblItem包含有关特定项目的信息,例如描述、代码等。 tblExhibitionItem包含来自的 id tblItem、展览 id 告诉系统特定项目属于哪个展览,以及该项目/展览组合的价格。

在我的控制器中,我正在填充 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 的新手,所以我不知道如何建立复选框和价格文本框之间的链接,以显示项目与项目的链接。换句话说,当我将更改提交到数据库时,我将使用项目的 ID 和价格填充展览项目,具体取决于是否选中了复选框(“chkIsSelected”)。

此外,如果数据库中已经有展览项目,我需要更改什么来填充复选框和价格?

4

1 回答 1

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.
}
于 2013-02-18T00:16:27.887 回答