将复选框列表绑定到数据模型中的Dictionary
本文关键字:Dictionary 数据模型 复选框 列表 绑定 | 更新日期: 2023-09-27 18:10:08
我是MVC3的新手,我不明白如何使用复选框。在我的模型中,我有一个服务列表和一个可用服务列表。其思想是显示所有可用的服务,并让用户通过选中相应的复选框来选择使用哪一次。
public Activity()
{
.....
this.Services = new List<Service>();
this.ServicesChecklist = new Dictionary<Service, bool>();
}
public virtual ICollection<Service> Services { get; set; }
public Dictionary<Service, bool> ServicesChecklist { get; set; }
我能够使用Controller的私有方法正确加载服务表私有字典AssignServiceToActivity(Activity Activity){
List<Service> s = new List<Service>(db.Services);
Dictionary<Service, bool> ServicesChecklist = new Dictionary<Service, bool>();
bool found;
foreach (var ser in s)
{
found = false;
foreach (var currService in activity.Services)
{
if (ser.id == currService.id)
{
ServicesChecklist.Add(ser, true);
found = true;
break;
}
}
if (!found)
ServicesChecklist.Add(ser, false);
}
return ServicesChecklist;
}
in my view I am trying to bind the checkboxes to the ServicesChecklist dictionary
<div id="tabs-2">
<table style="width:100%">
<tr>
<th>
Service
</th>
<th>
Type
</th>
<th>
Contact
</th>
<th>
Phone
</th>
</tr>
@foreach (var s in @Model.ServicesChecklist)
{
<tr>
<td>
@Html.CheckBox(s.Key.name, s.Key.id)
@Html.DisplayFor(modelItem => s.Key.name)
</td>
<td>
@Html.DisplayFor(modelItem => s.Key.ServiceType.name)
</td>
<td>
@Html.DisplayFor(modelItem => s.Key.contact_name)
</td>
<td>
@Html.DisplayFor(modelItem => s.Key.contact_phone)
</td>
</tr>
}
</table>
</div>
当页面加载但用户选择没有保存在模型中时,它可以正常工作
![enter image description here][1]
[1]: https://i.stack.imgur.com/Buklf.png
您需要使用带有提交按钮的表单将更改提交回服务器,或者在发生更改事件时使用JavaScript提交三个更改。