我们有一个系统来管理英国建筑贸易商的各个方面。
我们正在添加一个新的部分来管理他们的认证,并希望简化我们目前的实施。
我们希望在ViewModel中有一个List<int>
,但不确定如何从View中写入。请参阅下面伪视图代码中的问题:
如果剑道有帮助的话,我们就用剑道。
ViewModel
认证ApprovalViewModel.cs
public class AccreditationApprovalViewModel : ApprovalViewModel
{
// currently have:
// public bool HasAccreditation1;
// public bool HasAccreditation2;
// …
// public bool HasAccreditationN;
// We want to change the individual bools above to:
[DisplayName(“Has Accreditation“)]
public List<int> HasAccreditations;
}
查看
认证批准.cshtml
在这里有一些布尔标志控件:
认证1滞后
- 如果设置为true,int 1将添加到ViewModel中的HasAccreditations列表中(如果不在列表中(
- 如果设置为false,则从ViewModel中的HasAccreditations列表中删除int 1
认证2滞后
- 如果设置为true,int 2将添加到ViewModel中的HasAccreditations列表中(如果不在列表中(
- 如果设置为false,则从ViewModel中的HasAccreditations列表中删除int 2
类似于认证3、4、5等
我们的两个问题是:
- 我们如何创建EditorFor条目,以允许它写入ViewModel中的
List<int>
- 我们如何将数字连接到LabelFor中的DisplayString
@Html.LabelFor(model => model.HasAccreditations.Concat(" 1"))
@Html.EditorFor(model => model.HasAccreditations[0]) @* bool control writing to int in array *@
@Html.LabelFor(model => model.HasAccreditations.Concat(" 2"))
@Html.EditorFor(model => model.HasAccreditations[1]) @* bool control writing to int in array *@
我认为你应该重组你的模型,否则你将永远来回转换,你将无法轻松添加新的认证类型,等等。
每人一桌。一个包含人员id和认证id的多对多中介表,以及一个包含认证id和认证标题的新认证表。
如果您使用实体框架或类似的东西,一个正确连接的表将很容易地公开所有相关的属性,以便构建您的模型/视图模型。
在你看来,如果你正在使用剑道,你可以使用他们的多票机,或者一系列以认证id为值、认证头衔为标签的复选框。