列表项的 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)行时,我得到了一个空引用的例外。
我希望这一切都比我昨晚的漫谈更有意义,并感谢您的帮助......
数据的不同,有很多方法。但最终你想要的是一个表关系。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