ASP. NET MVC - сопоставить bools в View со списком int в ViewModel - PullRequest
0 голосов
/ 05 мая 2020

У нас есть система для управления различными аспектами строительства Торговцы в Великобритании.

Мы добавляем новый раздел для управления их Аккредитациями и хотели бы упростить нашу текущую реализацию.

Мы хотим иметь List<int> в нашей ViewModel, но не уверены, как мы пишем в него из нашего View. См. Вопросы в коде псевдо-просмотра ниже:

Мы используем Kendo, если это помогает.

ViewModel

AccreditationApprovalViewModel.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;
}

Просмотр

AccreditationApproval.cs html

Здесь есть несколько логических элементов управления флагами:

  • Accreditation1Flag

    • если установлено значение true, int 1 добавляется в список HasAccreditations в ViewModel (если еще не в списке)
    • если установлено значение false, int 1 удаляется из Список HasAccreditations в ViewModel
  • Accreditation2Flag

    • если установлено значение true, int 2 добавляется в список HasAccreditations в ViewModel (если его еще нет в списке)
    • если установлено значение false, int 2 удаляется из списка HasAccreditations в ViewModel

Аналогично для аккредитации 3, 4, 5 и т. Д. c

Наши два вопроса:

  • как создать EditorFor entr y, чтобы он мог записывать в List<int> в ViewModel
  • как нам объединить число с DisplayString в LabelFor?
@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 *@

1 Ответ

0 голосов
/ 05 мая 2020

Я думаю, вам следует реструктурировать свою модель, иначе вы будете вечно переводить туда и обратно, вы не сможете легко добавлять новые типы аккредитации и т. Д. c.

Одна таблица на человека. Промежуточная таблица "многие ко многим" с идентификатором человека и идентификатором аккредитации. И новая таблица для аккредитации с идентификатором аккредитации и заголовком аккредитации.

Если вы используете структуру сущностей или что-то подобное, правильно объединенная таблица будет легко отображать все связанные свойства с целью построения вашей модели / модели представления.

На ваш взгляд, если вы используете кендо, вы можете использовать их множественный выбор или серию флажков с идентификатором аккредитации в качестве значения и заголовком аккредитации в качестве метки.

...