So bin ich stecken geblieben und versuche, eine einfache Onchanger zu feuern, wenn sich ein select Dropdown-Wert ändert. Wie so:
<select class="form-control d-flex" onchange="(dostuff())">
@foreach (var template in templatestate.templates)
{
<option value=@template.Name>@template.Name</option>
}
</select>
mit der aufgerufenen Methode:
void dostuff()
{
Console.WriteLine("first spot is firing");
_template = templatestate.templates.FirstOrDefault(x => x.Name ==
_template.Name);
Console.WriteLine("second spot is firing");
}
Das Ergebnis bekomme ich egal wie ich es neu auszurichten versuche ist dieser Fehler im Browser.
Uncaught Error: System.ArgumentException: There is no event handler with ID 0
Gibt es etwas Offensichtliches und einen Schlüssel, den ich vermisse? Weil ich ein Button onclick -Ereignis habe, das auf der gleichen Seite gut funktioniert.
Ihre Antwort sollte im cshtml sein:
<select onchange=@DoStuff>
@foreach (var template in templates)
{
<option value=@template>@template</option>
}
</select>
Dann sollten Ihre @Funktionen wie folgt aussehen:
@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);
}
}
Sie könnten auch einfach eine Bindung verwenden ...
<select bind="@selectedString">
aber onchange = @ DoStuff ermöglicht Ihnen, Logik bei der Auswahl durchzuführen.
Für Anfänger verwenden Sie nicht die richtige Bindungs-Syntax:
onchange="@dostuff"
bemerke das @