Выберите привязку коробки в блазоре - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь привязать "CountryId" в модели к значению выбранного элемента списка SelectList в Blazor. Все элементы Country находятся в списке, например, объект {CountryId, CountryName}. Я делаю код следующим образом:

    <InputSelect @bind-Value="model.ByCountryId" class="form-control">
        @if (model?.Countries != null)
        {
           @foreach (var cnt in model.Countries)
           {
               <option value="@cnt.Id">@cnt.Name</option>
           }
        }
     </InputSelect>

И блок кода:

@code {

BrandModel model = new BrandModel();

protected override async Task OnInitializedAsync()
{
    model = new BrandModel
    {
        Id = 19,
        ByCountryId = 1,
        Countries = new List<ent.Country>
            {
                new ent.Country { Id = 1, Name = "Azerbaijan" },
                new ent.Country { Id = 2, Name = "Turkey" }
            },
        IsActive = true,
        Name = "Brand"
    };
}

Но это выполнение дает мне эту ошибку в браузере:

Blazor.webassembly.js: 1 WASM: System. ? Спасибо за чтение!

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Это хорошо работает, когда я помещаю <InputSelect> в <EditForm Model="@model">..</EditForm >, и в привязке данных нет проблем.

Попробуйте использовать приведенный ниже код для установки <BlazorLinkOnBuild>false</BlazorLinkOnBuild> в файле csproj.

<PropertyGroup>
   <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
</PropertyGroup>

См. https://github.com/aspnet/AspNetCore/issues/7784

Обновление:

Использовать тег <select> вместо <InputSelect> как

<select @bind="model.ByCountryId">
        @if (model?.Countries != null)
        {
            @foreach (var cnt in model.Countries)
            {
                <option value="@cnt.Id">@cnt.Name</option>
            }
        }
</select>
1 голос
/ 21 октября 2019

Я не пытался решить ваши проблемы, потому что их много. Вместо этого я составил код, который позволяет отображать список стран в выбранном элементе и извлекать код выбранной страны или идентификатор. Пожалуйста, посмотрите, как я определяю модель и как она используется. Этот код подходит для интеграции с другими выбранными элементами для формирования каскадного выпадающего списка (список городов, который заполняется после выбора страны и т. Д.). Просто скопируйте фрагмент кода в файл Index.razor и выполните его ...

<select class="form-control" @bind="@SelectedCountryID">

    <option value=""></option>
    @foreach(var country in CountryList)
    {
        <option value = "@country.Code"> @country.Name </option >
    }
}

</select>

<p>@SelectedCountryID</p>

@code {

    string selectedCountryID;

    string SelectedCountryID
    {
        get => selectedCountryID;
        set
        {
            selectedCountryID = value;

        }
    }

    List<Country> CountryList = new List<Country>() { new Country ("USA", "United States"),
                                                      new Country ("UK", "United Kingdom") };

    public class Country
    {

        public Country(string code, string name)
        {
            Code = code;
            Name = name;
        }
        public string Code { get; set; }
        public string Name { get; set; }

    }
}
...