ASP.NET MVC-将视图中的bools映射到ViewModel中的int列表



我们有一个系统来管理英国建筑贸易商的各个方面。

我们正在添加一个新的部分来管理他们的认证,并希望简化我们目前的实施。

我们希望在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为值、认证头衔为标签的复选框。

最新更新