Как уже упоминалось в теме, почему в раскрывающемся списке «Клиент» в файле razor .razor.cs отображается значение, а не текст? Как видно на изображении ниже, в раскрывающемся списке «Сайт» отображается текст, как и ожидалось.
Смотрите снимок экрана и необходимые файлы razor и razor.cs ниже:
Как уже упоминалось в теме, почему в раскрывающемся списке «Клиент» в файле razor .razor.cs отображается значение, а не текст? Как видно на изображении ниже, в раскрывающемся списке «Сайт» отображается текст, как и ожидалось. Смотрите снимок экрана и необходимые файлы razor и razor.cs ниже: [img]https://i.sstatic.net/MRaRBopB.png[/img]
[b]Файл EditScanner.razor[/b] [code]...
@foreach (var client in _clients) { @client.ClientName }
@if (_sites != null) { @foreach (var site in _sites) { @site.SiteName } }
... [/code] [b]EditScanner.razor.cs[/b] [code]public partial class EditScanner { public UpdateScannerModel? Model { get; set; } private ClientDto _client = new ClientDto(); private List _clients = new List(); private SiteDto _site = new SiteDto(); private List _sites = new List(); private MudSelect? _siteSelect; private int _selectedSiteId;
// Load scanner data await LoadScannerById(ScannerId);
// Then get client and sites for this scanner's site if (Model?.SiteId > 0) { var site = await ClientService.GetSiteByIdAsync(Model.SiteId); if (site != null) { _client = await ClientService.GetClientByIdAsync(site.ClientId); await GetSites(site.ClientId); } }
// Set SelectedClientId after data is loaded if (_client != null) { SelectedClientId = _client.ClientId; await OnValueChanged(SelectedClientId); }
private async Task GetClientBySiteId(int? siteId) { if (siteId == null) return; var site = await ClientService.GetSiteByIdAsync(siteId.Value); if (site != null) { _client = await ClientService.GetClientByIdAsync(site.ClientId); } } private async Task OnValueChanged(int clientId) { // Clear existing sites and reset selected site first so MudSelect doesn't temporarily show the raw value. _sites.Clear(); _selectedSiteId = 0; Model.SiteId = 0; await InvokeAsync(StateHasChanged);
// Load new sites for selected client. await GetSites(clientId);
// Ensure the items are rendered before applying a selected value. await InvokeAsync(StateHasChanged);
// Yield to let the renderer finish (avoids applying the selected value before items exist). await Task.Yield();
// Select first site if available so the select shows the site's label immediately. if (_sites.Count > 0) { _selectedSiteId = _sites[0].SiteId; Model.SiteId = _selectedSiteId; } else { _selectedSiteId = 0; Model.SiteId = 0; }
public class UpdateScannerModel { public int SiteId { get; set; } public string ScannerName { get; set; } = string.Empty; ... } } [/code] [b]Обновить[/b] Список _clients заполнен правильными данными, как показано на изображении ниже. [img]https://i.sstatic.net/7odWnDde.png[/img]