列表项的 C# MVC 集合

本文关键字:MVC 集合 列表 | 更新日期: 2023-09-27 18:37:00

我有一个项目,我需要有两个项目A,B,C,D&1,2,3,4等列表,这个列表将有一个CRUD接口来随着时间的推移更改列表(通常只添加到列表中)。

然后在一个页面上,我有一个数据条目,最终用户将在其中看到两个列表,旁边带有复选框,以便他们可以选择哪个列表适用于该条目。因此,他们可以从第一个列表 A,D 和第二个列表 2,4 中进行选择。 我需要将此选择与页面上的其他条目(如名称、注释、区域等)一起存储。

我的问题是,使用 MVC 和 EF,我在数据库中有一个模型和表以及两个列表的 CRUD,我什至设计了我的数据输入页面,但是当单击保存按钮时,我不确定如何最好地存储和保存这些数据。

不确定我是否完全描述了这一点,但我需要一个列表来保存每个列表的可能选择,然后在输入数据后将条目的选择保存回数据库。

我希望这是有意义的,如果我有代码,我会发布,但我仍处于设计阶段,所以我所拥有的是废话,因此使用了大删除键,我正在重新开始寻找想法。

谢谢

悬崖。

[编辑]

我想我想说的是,我希望页面上有两个多选列表,并存储这两个列表的选择。 但列表中的值也来自数据库。

[编辑]

好的,看起来我已经找到了一个可以处理列表的插件,实际上非常适合我的需求

MvcCheckBoxList

只需要弄清楚如何在一个视图中有两个这样的列表,这应该不会太困难。

{编辑}

好的,一直在努力解决这个问题,并将以下内容作为我的模型......

 public class CallResult
{
    [Key]
    public int CallResultId { get; set; }
    public string Area { get; set; }
    public string Number { get; set; }
    public DateTime Date { get; set; }
    public ICollection<TargetCustomer> TargetCustomers { get; set; }
}
public class TargetCustomer
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<CallResult> CallResults { get; set; }
}

我需要有一个包含多选目标客户的创建页面,然后用户选择的内容将作为列表的一部分存储在 CallResult 中。

到目前为止,我的创建操作是:

public ActionResult Create()
    {
        var targetCustomers = new List<TargetCustomer>()
        {
            new TargetCustomer() { Id = 1, Name = "Manger", CallResults = new Collection<CallResult>()},
            new TargetCustomer() { Id = 2, Name = "Worker", CallResults = new Collection<CallResult>()},
        };

        ViewBag.MultiSelectTC = new MultiSelectList(targetCustomers, "Id", "Name");
        return View();
    }

视图中的代码段:

    <div class="form-group">
        <div class="control-label col-md-2">
            <label>Target Customer</label>
        </div>
        <div class="col-md-10">
            @Html.ListBox("targetCustomers", (MultiSelectList)ViewBag.MultiSelectTC)
        </div>
    </div>

现在我只需要将数据恢复到操作中,以便可以根据 EF 数据库中的 CallResult 存储它,我有这个:

public ActionResult Create([Bind(Include = "CallResultId,Area,Number,Date")] CallResult callResult, int[] targetCustomers)
    {
        if (ModelState.IsValid)
        {
            // Find Tag from Database
            // Attach tag entity to Post
            foreach (var custId in targetCustomers)
            {
                var cust = db.TargetCustomer.Find(custId); 
                callResult.TargetCustomers.Add(cust);
            }
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(callResult);
    }

但是当它到达callResult.TargetCustomers.Add(cust)行时,我得到了一个空引用的例外。

我希望这一切都比我昨晚的漫谈更有意义,并感谢您的帮助......

列表项的 C# MVC 集合

根据

数据的不同,有很多方法。但最终你想要的是一个表关系。1 个用户可以有多个选项。一个选项可以有多个用户。

为简单起见:

Table `option_list_1`:
id - option_name
1 - a
2 - b
Table `option_list_2`:
id - option_name
1 - 1
2 - 2
Table `user_data`:
user_data_id - name - notes

遗产:

Table `user_options`:
user_data_id - discriminator - option_id

非继承:

Table `user_options_1`
user_data_id - option_id
Table `user_options_2`
user_data_id - option_id