モデルの "CountryId"を、ブレザーのSelectListの選択された項目の値にバインドしようとしています。すべての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.MissingMethodException: 'System.ComponentModel.ByteConverter'タイプのコンストラクタが見つかりません。
バインドの便利な方法は何ですか<select>
およびmodel.data
ブレザーで?読んでくれてありがとう!
<InputSelect>
を<EditForm Model="@model">..</EditForm >
に入れるとうまく機能し、データバインディングに問題はありません。
以下のコードを使用して、csprojファイルに<BlazorLinkOnBuild>false</BlazorLinkOnBuild>
を設定してください。
<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>
たくさんあるのであなたの問題を解決しようとはしませんでした。代わりに、select要素で国のリストを表示し、選択した国コードまたはIDを取得する方法をコードで作成しました。モデルの定義方法と使用方法をご覧ください。このコードは、カスケードドロップダウンエクスペリエンス(国を選択した後に入力される都市のリストなど)を形成するために、他の選択要素と統合するのに適しています。コードスニペットを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; }
}
}