Данные Blazor связывают два значения для выбора - PullRequest
1 голос
/ 15 апреля 2020

Я могу легко связать одно значение с моей моделью, но что, если я хочу связать два или более?

Пример кода, попытка связать со сложным объектом, но это не удается.

Компонент:

 <select id="myClassId" @onchange="SelectionChanged" class="form-control">
                            <option value=""></option>
                            @foreach (var myObject in myClassList)
                            {
                                <option value="@myObject">@myObject.AccountName</option>
                            }
                        </select>

Код

 void SelectionChanged(ChangeEventArgs e)
    {
        Console.WriteLine(((MyClass)e.Value).AccountId);
        Console.WriteLine(((MyClass)e.Value).AccountName);

    }

ОБНОВЛЕНИЕ:

Закончено это делать. Возможно, это не самое элегантное решение, но я не уверен, есть ли другие, более «поддерживаемые» способы.

<select id="myClassId" @onchange="SelectionChanged" class="form-control">
                            <option value=""></option>
                            @foreach (var myObject in myClassList)
                            {
                                <option value="@myObject.AccountId;@myObject.AccountName">@myObject.AccountName</option>
                            }
                        </select>

 void SelectionChanged(ChangeEventArgs e)
    {
        var accountId = e.Value.ToString().Split(";")[0];
        var accountName = e.Value.ToString().Split(";")[1];
        Console.WriteLine(accountId);
        Console.WriteLine(accountName);
    }

1 Ответ

3 голосов
/ 15 апреля 2020

Значением выбора является строка. Это фундаментальное ограничение HTML, и оно не имеет ничего общего с Blazor. Вы не можете использовать объект. Лучше всего здесь назначить идентификатор или другое уникально идентифицирующее значение, а затем в вашем обработчике onchange найти фактический объект, который вы хотите назначить, используя это значение.

...