@using BLAIzor.Models @using Radzen @if (isEditing) {

@TitleString

@foreach (var field in Fields) { if (IgnoreReflection.Contains(field.Label)) continue;
@switch (field.Type?.ToLower()) { case "textarea": Console.Write($"{field.Label}, {GetValue(field.Label)}"); break; case "number": SetValue(field.Label, args.ToString())) InputAttributes="@(new Dictionary(){ { "aria-label", "enter value" }})" /> @* *@ break; case "date": break; case "checkbox":
break; case "radio":
@foreach (var option in field.Options ?? new()) { var split = option.Split(':'); var text = split[0]; var val = split.Length > 1 && int.TryParse(split[1], out var parsedVal) ? parsedVal : 0; }
break; case "select": break; default: break; }
}
} else {

Details

@foreach (var field in Fields) {

@field.Label: @formValues.GetValueOrDefault(field.Label)

}
}

@FormSubmitResult

@code { [Parameter] public List Fields { get; set; } = new(); [Parameter] public List IgnoreReflection { get; set; } = new(); [Parameter] public EventCallback> OnSubmit { get; set; } [Parameter] public bool isEditing { get; set; } [Parameter] public string TitleString { get; set; } = "Edit your details"; [Parameter] public string ButtonTextString { get; set; } = "Submit"; private EditContext editContext; private Dictionary formValues = new(); private Dictionary formDates = new(); private string FormSubmitResult = ""; protected override void OnParametersSet() { foreach (var field in Fields) { // Initialize default value for form fields (text, number, etc.) if (!formValues.ContainsKey(field.Label)) { if (field.Type?.ToLower() == "radio" && field.Options?.Count > 0) { // Try to get the value part after ":" in "Text:Value" format var firstOption = field.Options.FirstOrDefault(); var defaultValue = firstOption?.Split(':').Length > 1 ? firstOption.Split(':')[1] : "0"; formValues[field.Label] = defaultValue ?? "0"; } else { formValues[field.Label] = string.Empty; } } // Initialize default value for date fields if (field.Type?.ToLower() == "date" && !formDates.ContainsKey(field.Label)) { formDates[field.Label] = DateTime.Today; } } editContext = new EditContext(formValues); } private string GetValue(string label) => formValues.TryGetValue(label, out var value) ? value : ""; private void SetValue(string label, string? value) { formValues[label] = value ?? ""; } private DateTime? GetDate(string label) => formDates.TryGetValue(label, out var date) ? date : null; private void SetDate(string label, DateTime? value) { formDates[label] = value; } private string GetDropdownValue(string label) => formValues.TryGetValue(label, out var value) ? value : ""; private void SetDropdownValue(string label, string? value) { formValues[label] = value ?? ""; } private bool GetCheckboxValue(string label) { if (formValues.TryGetValue(label, out var value)) { return bool.TryParse(value, out var result) && result; } return false; } private void SetCheckboxValue(string label, bool? value) { formValues[label] = (value ?? false).ToString(); } private int GetRadioValue(string label) { if (formValues.TryGetValue(label, out var value) && int.TryParse(value, out var intValue)) return intValue; return 0; // or your default } private void SetRadioValue(string label, int? value) { formValues[label] = value?.ToString() ?? "0"; } private async Task HandleValidSubmit() { // Merge dates back into string values foreach (var dateField in formDates) { formValues[dateField.Key] = dateField.Value?.ToString("yyyy-MM-dd") ?? ""; } FormSubmitResult = "Success!"; await OnSubmit.InvokeAsync(formValues); isEditing = false; } }