具有动态CheckBox数量的ASP.NET MVC模型

我有一个具有一对多关系的数据库,我很难在ASP.NET MVC中进行建模。为简单起见,假设表A表示办公楼,表B表示员工,表C创建员工与建筑物之间的一对多关系,以指示哪些员工可以访问特定建筑物。 雇员 EmployeeId - int FirstName - 字符串 LastName - 字符串 办公室 OfficeId - int 位置 - 字符串 EmployeeOffice EmployeeId - int OfficeId - int 当新员工加入时,我想将他们分配到他们能够访问的任何办公楼。为此,UI调用每个办公楼的复选框。选中复选框即可授予用户访问相关办公楼的权限。 [] - 办公室1 [] - 办公室2 [] - 办公室3 [] - 办公室4 我担心的是,办公室应该充满活力。换句话说,办公室(或办公室)可以随时进出。 该模型实际上比我描述的更复杂。因此,我有一个CreateEmployeeViewModel,它包含属性(带注释),如下所示:
public class CreateEmployeeViewModel
{
    public string FirstName
    {
        get;
        set;
    }

    public string LastName
    {
        get;
        set;
    }

    public IDictionary Offices
    {
        get;
        private set;
    }


    public CreateEmployeeViewModel(IDictionary offices)
    {
        Offices = offices;
    }
}
我的观点类似于以下内容
<div>
    <%: Html.LabelFor(model => model.FirstName) %>
</div>
<div>
    <%: Html.TextBoxFor(model => model.FirstName) %>
    <%: Html.ValidationMessageFor(model => model.FirstName) %>
</div>

<div>
    <%: Html.LabelFor(model => model.LastName) %>
</div>
<div>
    <%: Html.TextBoxFor(model => model.LastName) %>
    <%: Html.ValidationMessageFor(model => model.LastName) %>
</div>

<!-- This is really ugly, so I welcome any suggested updates -->
<% foreach (KeyValuePair<int, string> office in Model.Offices) { %>
    <label for="Office<%: office.Key %>"><%: office.Value %></label>
    <input id="Office<%: office.Key %>" type="checkbox" value="<%: office.Key %>" />
<% } %>
当我单击表单的提交按钮时,除了复选框之外,我希望能够返回强类型视图模型,以便我知道要为哪些办公室分配用户。我创建了我的动作方法,如下所示:
public ActionResult Create(CreateUserViewModel user, FormCollection collection)
附加FormCollection对象的原因是我希望除了在视图模型上找到的表单值之外我还可以获得表单值(例如,复选框)。但遗憾的是,该集合仅包含在我的视图模型中找到的属性的信息。 在ASP.NET MVC 2.0中使用此设计处理表单的正确方法是什么?     
已邀请:
您需要将“name”属性添加到复选框输入元素 - 否则它们不会显示在FormCollection中。     

要回复问题请先登录注册