ASP.Net Core, как получить все выбранные значения тегов Select?

242
24 января 2018, 12:41

Предположим я на странице леплю формочку в которой несколько элементов select, вот такой код

@page
@model ArmUpdater.Pages.Index2Model
@{
    ViewData["Title"] = "Index2";
}
<div class="row">
    <form method="post">
        <div class="col-md-8">
            @foreach (var service in Model.Services)
            {
                <div class="row">
                    <div class="col-md-4">
                        <label asp-for="@service.Id"></label>
                    </div>
                    <div class="col-md-3">
                        <select asp-items="@(new SelectList(service.Versions))"></select>
                    </div>
                    <div class="col-md-3">
                        <label>@service.CurrentVersion</label>
                    </div>
                </div>
            }
        </div>
        <input type="submit" class="btn btn-default" asp-page-handler="update" value="Update" />
    </form>
</div>

вот модель

public class Index2Model : PageModel
{
    public class ServiceModel
    {
        public string Id { get; set; }
        public Version CurrentVersion { get; set; }
        public Version[] Versions { get; set; }     
        public ServiceModel(string id, Version version, Version[] availableVersions)
        {
            Id = id;
            CurrentVersion = version;
            Versions = availableVersions;
        } 
    }
    private readonly IceGridEngine _iceGridEngine;
    public ServiceModel[] Services { get; set; }
    public Index2Model(IceGridEngine iceGridEngine)
    {
        _iceGridEngine = iceGridEngine;
    }
    public void OnGet()
    {
        Services = _iceGridEngine.GetServices();
    }
    public async Task<IActionResult> OnPostUpdateAsync(IEnumerable<ServiceModel> services)
    {
        var tmp = services.ToArray();
        return Page();
    }
}

Список сервисов берется динамически из источника, соответственно у меня не получается хранить выбранные версии в Model.Services, как описано в большинстве мануалов.

Кто-нибудь может подсказать, куда копать, чтобы получить список всех выбранных версий сервисов в формате service.Id, service.SelectedVersion?