選択したドロップダウンでBlazor onchangeイベント

asp.net-core blazor c#

質問

だから私は選択ドロップダウン値が変更されたときに発射する簡単なonchangeを取得しようとしているスタックされています。そのようです:

<select class="form-control d-flex" onchange="(dostuff())">
    @foreach (var template in templatestate.templates)
    {
        <option value=@template.Name>@template.Name</option>
    }
</select>

このメソッドが呼び出されると、

void dostuff()
{
   Console.WriteLine("first spot is firing");
    _template = templatestate.templates.FirstOrDefault(x => x.Name == 
    _template.Name);
    Console.WriteLine("second spot is firing");
}

私はそれがブラウザでこのエラーですどのように方向を変えようとしても、私はそれを得る結果。

Uncaught Error: System.ArgumentException: There is no event handler with ID 0

私が紛失していることが明らかで重要なことはありますか?同じページでうまく動作するボタンonclickイベントがあるためです。

受け入れられた回答

あなたの答えはcshtmlにあるはずです:

<select onchange=@DoStuff>
    @foreach (var template in templates)
    {
        <option value=@template>@template</option>
    }
</select>

あなたの@関数は次のようになります:

@functions {
    List<string> templates = new List<string>() { "Maui", "Hawaii", "Niihau", "Kauai", "Kahoolawe" };
    string selectedString = "Maui";

    void DoStuff(UIChangeEventArgs e)
    {
        selectedString = e.Value.ToString();
        Console.WriteLine("It is definitely: " + selectedString);
    }
}

また、バインドを使用することもできます...

<select bind="@selectedString"> 

しかしonchange = @ DoStuffでは、選択時にロジックを実行することができます。


人気のある回答

まず、正しいバインド構文を使用していません:

onchange="@dostuff"

@



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow