Вам необходимо привязать список int
вместо списка Label
в модели представления.Затем вам нужно будет использовать этот список выбранных идентификаторов, чтобы заполнить список ярлыков для сущности Team
, которую вы сохраняете:
public class CreateTeamViewModel
{
[Required]
public string TeamName { get; set; }
public string ProjectName { get; set; }
public string ProjectDescription { get; set; }
[Required]
public string RepositoryLink { get; set; }
public List<int> SelectedLabels { get; set; } = new List<int>();
}
Затем вам нужно изменить свою форму напривяжите свои флажки к этому списку:
@foreach (var label in labels)
{
<input asp-for="SelectedLabels" id="Label@(label.Id)" value="@label.Id" type="checkbox" />
<label id="Label@(label.Id)">
<span class="badge badge-@label.ColorPalette">@label.Name</span>
</label>
}
Обратите внимание, что я удалил скрытые входы.Вы должны никогда публиковать что-либо, что пользователь не сможет изменить, так как даже скрытые входы могут быть подделаны.
После публикации на стороне сервера вы получите списокидентификаторов меток, которые были выбраны пользователем.Просто запросите соответствующие метки из вашей базы данных, а затем назначьте их команде, которую вы создаете:
team.Labels = await _context.Set<Label>().Where(x => model.SelectedLabels.Contains(x.Id)).ToListAsync();