@page "/" @if(additionalFields != null) { int count = additionalFields.Count; for (var i=0; i < count; i++) { int current = i; // don't use loop variable in binding var additionalField = additionalFields[current]; <div class="col-sm-6"> <div class="page_input"> <label> @additionalField.Caption (@current)</label> <select class="checkout-control pristine untouched" @onchange="((e) => HandleSelect(e, current))" > @foreach (var keyValue in additionalField.ValueList) { <option value="@keyValue.Sort" selected="@(keyValue.Sort == additionalField.Selected)">@keyValue.SelectionText</option> } </select> </div> </div> } } <hr/> @if(events != null) { <ul> @foreach(var evt in events) { <li>@evt</li> } </ul> } @code { protected override void OnInitialized() { additionalFields = new List<AdditionalField>(); additionalFields.Add(new AdditionalField() { Caption = "field1", ValueList = new List<Value>() { new Value() { Sort = "sort1", SelectionText ="Sort 1" }, new Value() { Sort = "sort2", SelectionText ="Sort 2" }, new Value() { Sort = "sort3", SelectionText ="Sort 3" }, } }); additionalFields.Add(new AdditionalField() { Caption = "field2", ValueList = new List<Value>() { new Value() { Sort = "sortA", SelectionText ="Sort A" }, new Value() { Sort = "sortB", SelectionText ="Sort B" }, new Value() { Sort = "sortC", SelectionText ="Sort C" }, } }); // set the selected item on the second list to the second sort additionalFields[1].Selected = "sortB"; } void HandleSelect(ChangeEventArgs e, int index) { string selected = e.Value.ToString(); var item = additionalFields[index]; events.Add($"User selected '{selected}' for index {index} - {item.Caption}"); // set the value item.Selected = selected; } private List<AdditionalField> additionalFields; private List<string> events = new List<string>(); class Value { public string Sort {get;set;} public string SelectionText {get;set;} } class AdditionalField { public string Caption {get;set;} public string Selected {get;set;} public List<Value> ValueList {get;set;} } }
namespace BlazorFiddleProject { using Microsoft.AspNetCore.Components.Builder; using Microsoft.Extensions.DependencyInjection; public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IComponentsApplicationBuilder app) { app.AddComponent<App>("app"); } } }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width"> <title>BlazorFiddleProject</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <style> app { } </style> <script type="text/javascript"> </script> </head> <body> <app>Loading...</app> <script src="_framework/blazor.webassembly.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> </body> </html>

Add component

BlazorFiddle was updated from Blazor 0.7 to .NET 6.0. Your old source code could not work. You need to upgrade to latest.