Blazorフレームワークを使用してチェックされている場合、チェックボックスの値を取得しようとしていますが、これまでのところ、そのためのメソッドを見つけることができませんでした。チェックボックスにバインディングを配置すると、常にチェックされます。チェックされた値を取得する方法を理解できませんでした。
これは私のコードです:
<input type="checkbox" id="addition" name="math" value="add" bind="@name" />
<label for="addition">Addition</label>
@page "/registration"
@foreach (var club in ClubList())
{
<input type="checkbox" @onchange="eventArgs => { CheckboxClicked(club, eventArgs.Value); }" />@club<br />
}
@functions {
public List<string> ClubMember { get; set; } = new List<string>();
void CheckboxClicked(string clubID, object checkedValue)
{
if ((bool)checkedValue)
{
if (!ClubMember.Contains(clubID))
{
ClubMember.Add(clubID);
}
}
else
{
if (ClubMember.Contains(clubID))
{
ClubMember.Remove(clubID);
}
}
}
public List<String> ClubList()
{
// fetch from API or...
List<String> c = new List<String>();
c.Add("Clube01");
c.Add("Clube02");
return c;
}
}
value="add"
の部分を削除する必要があります。
name
がブール値であることを確認してください。
編集:完全な例
@page "/test2"
<input type="checkbox" bind="@boolvalue" /><br/>
Boolvalue: @boolvalue<br/>
<button onclick="@toggle">toggle</button>
@functions
{
public bool boolvalue { get; set; }
void toggle()
{
boolvalue = !boolvalue;
}
}
チェックボックスの値をブール値にバインドします。
@コードでは、bool checkedValue = false; //または、ユースケースに適している場合はtrue
あなたのHTMLで:
<input type="checkbox" checked @bind="checkedValue">
CheckedValueの値は、チェックボックスと同じ値になります。
Value属性を削除します。
<input type="checkbox" id="addition" name="math" bind="@name" />
このプロパティを@functionブロックまたはBlazorCoponentから派生したクラスに追加します。
public bool name {get;set;}
これで、チェックボックスの値がnameプロパティにバインドされ、他のプロパティにアクセスするのと同じように、チェックボックスの値を含むこのプロパティにアクセスして、チェックボックスの値を取得できます。
お役に立てれば...
他の答えが私が探していたものを実行するとは思わない:
私のソリューションはこれらの両方を実行しますが、チェックされたバージョンとチェックされていないバージョンに対してタグを繰り返す必要があります。
かみそりファイルは次のようになります:
@if (Approved)
{
<input type="checkbox" checked @onchange="@(async (e) =>
await ToggleApprovedAsync(false))" />
}
else
{
<input type="checkbox" @onchange="@(async (e) =>
await ToggleApprovedAsync(true))" />
}
@code {
bool Approved;
override async Task OnInitializedAsync()
{
Approved = await HttpClient.GetJsonAsync<bool>("../api/IsApproved");
}
async Task ToggleApprovedAsync(bool approved)
{
Console.WriteLine("Toggle Approved " + approved );
if (approved)
{
await HttpClient.PostJsonAsync<bool>($"../api/Approve", null);
Approved = true;
}
else
{
await HttpClient.PostJsonAsync<bool>($"../api/Disapprove", null);
Approved = false;
}
}
}