1

我有一个强类型视图,其中有一个表单。我在文本框中显示联系人(对象)的值。联系人有一个功能列表。我还列出了数据库中存在的所有函数。在视图中,我通过显示复选框来列出所有函数(值:函数的 ID,显示:函数的名称)。在此之前,我将联系人的功能列表与所有功能进行比较,并检查了联系人的功能。像那样 :

 @foreach (extranetClient.Models.Classes.FonctionContact fonction in ViewBag.Fonctions)
         {
                string coche = "";
                if ((@Model.ListeFonctions).Where(c => c.IdFonction == fonction.IdFonction).Count() > 0)
                     {
                          coche = "checked";
                     }

                <input type="checkbox" @coche id="@fonction.IdFonction" />@fonction.LibelleFonction <br />
         }

它看起来像这样:

在此处输入图像描述

但是现在,如果用户选中复选框以向联系人添加功能,我需要将其保存在联系人列表中。我找不到如何做到这一点。有人有想法吗?

4

1 回答 1

1

首先,我们需要修改您的复选框,以便它们正确发布。当一个复选框被选中时,它将像这样发布name=value。但是我们希望您的所有复选框都发布到一个集合中,因此名称将遵循这种格式function[x],其中 x 是复选框的索引。然后该值成为函数的 ID。

@{
    var i = 0;
}
@foreach (extranetClient.Models.Classes.FonctionContact fonction in ViewBag.Fonctions)
{
    string coche = "";
    if ((@Model.ListeFonctions).Any(c => c.IdFonction == fonction.IdFonction))
    {
        coche = "checked";
    }

    <input type="checkbox" @coche id="functions[@(i++)]" value="@fonction.IdFonction" />@fonction.LibelleFonction <br />
}

现在创建一个可以接收复选框数据的操作方法。只需提供一个参数,该参数可以接收int假设您的函数 ID 为ints 的枚举。

public ActionResult UpdateFunctions(IEnumerable<int> functions)
{
    // TODO: functions contains IDs of all checked boxes.
}

希望这可以帮助。

于 2013-08-07T14:50:40.213 回答