Bind [Flags] Enum в MultiSelect Blazor - PullRequest
       56

Bind [Flags] Enum в MultiSelect Blazor

0 голосов
/ 08 апреля 2020

Нет

0 Баллов

1 Пост

[Flags] Enum - компонент MultiSelect Blazor 49 минут назад | LINK | 188.23.119.141

I Я работаю над веб-приложением Blazor на стороне сервера, которое в основном о пациентах, которые могут заполнить несколько вопросников об их болезни. Эти данные хранятся в базе данных через EF Core. Моя проблема в том, что во многих вопросниках есть поле, в котором пользователь может указать несколько опций, мультиэлемент, с базовым типом данных Enum [Flags] (я полагал, что перечисление будет проще, чем отдельный класс для каждого поля):

[Flags]
public enum PainSite
{
    BehindBothEyes = 1,
    ... // 12 options in total 
}

При использовании встроенного тега InputSelect мне удалось указать только ОДНУ опцию, поскольку она не допускает атрибут «несколько». Связывание с одним параметром enum сработало, но мне нужно, чтобы вход был множественным! (независимо от того, выпадающий или список). Таким образом, я попробовал следующее, что позволяет мне фактически выбрать несколько значений, но только одно фактически связано и, следовательно, хранится в базе данных.

<select multiple class="form-control" @bind="@PostOp.PainStart">
       @foreach (var painSite in Enum.GetValues(typeof(PainSite)))
       {
            <option value="@painSite">@painSite</option>
       }
</select>  

[Parameter] public int Id { get; set; }
[Parameter] public EventCallback<PostOpQuestionaire> OnValidSubmit { get; set; }

public PostOpQuestionaire PostOp { get; set; } = new PostOpQuestionaire();

protected override async Task OnInitializedAsync()
{
    try
    {
        Patient patient = await patientDataService.GetPatientById(Id);
        PostOp = patient.PostOp;
    }
    catch
    {
        PostOp = new PostOpQuestionaire();
    }
}

Есть ли у вас какие-либо идеи о том, как использовать перечисление [flags] в качестве базового типа для компонента множественного выбора в Blazor?

...