【问题标题】:how to add object to a list in a view?如何将对象添加到视图中的列表?
【发布时间】:2013-08-07 22:50:40
【问题描述】:

我有一个强类型视图,其中有一个表单。我在文本框中显示联系人(对象)的值。联系人有一个功能列表。我还列出了数据库中存在的所有函数。在视图中,我通过显示复选框来列出所有函数(值:函数的 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 />
         }

看起来是这样的:

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

【问题讨论】:

    标签: c#-4.0 asp.net-mvc-4


    【解决方案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 />
    }
    

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

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

    希望这会有所帮助。

    【讨论】:

    • 好吧,但它是一个完整的表单,当我们提交它时,我们会在函数public ActionResult AjouterModifierContact(Contact contactAModifier) {}中收到所有数据
    • 如果您将帖子发布到模型中,只需确保模型可以接收int 的枚举,并将复选框 (function[x]) 命名为模型上的该属性。
    • 我会试试的,我会给你反馈。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多