Почему раскрывающийся список «Клиент» в моем файле .razor показывает целочисленное значение вместо текстового значения?C#

Место общения программистов C#
Ответить
Anonymous
 Почему раскрывающийся список «Клиент» в моем файле .razor показывает целочисленное значение вместо текстового значения?

Сообщение Anonymous »

Как уже упоминалось в теме, почему в раскрывающемся списке «Клиент» в файле razor .razor.cs отображается значение, а не текст? Как видно на изображении ниже, в раскрывающемся списке «Сайт» отображается текст, как и ожидалось.
Смотрите снимок экрана и необходимые файлы razor и razor.cs ниже:
Изображение

Файл EditScanner.razor

Код: Выделить всё

...



@foreach (var client in _clients)
{
@client.ClientName
}





@if (_sites != null)
{
@foreach (var site in _sites)
{
@site.SiteName
}
}



...
EditScanner.razor.cs

Код: Выделить всё

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;

Dictionary _loggingLevelMessages;

private MudForm? _form;

protected override async Task OnInitializedAsync()
{
try
{
_loggingLevelMessages = ExtensionMethods.GetEventLoggingLevelMessages();
await GetClients();

// 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);
}

_isInitialized = true;
}
catch (Exception e)
{
Snackbar.Add(e.Message, Severity.Error);
}
}

public int SelectedClientId
{
get => _client.ClientId;
set
{
if (_client.ClientId == value) return;

_client.ClientId = value;
_client = _clients.FirstOrDefault(c => c.ClientId == value) ?? _client;
//Model.SiteId = _client?.Sites.FirstOrDefault(s => s.SiteId == Model.SiteId)?.SiteId ?? 0;

if (_isInitialized)
{
_ = InvokeAsync(() =>  OnValueChanged(value));
InvokeAsync(StateHasChanged);
}
}
}

private async Task LoadScannerById(int scannerId)
{
try
{
var scannerDto = await ScannerService.GetScannerByIdAsync(scannerId);
Model = new UpdateScannerModel
{
SiteId = scannerDto.SiteId,
ScannerName = scannerDto.ScannerName,
...
};
}
catch (Exception e)
{
Snackbar.Add(e.Message, Severity.Error);
}
}

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;
}

await InvokeAsync(StateHasChanged);
}

private async Task GetClients()
{
_clients = await ClientService.GetClientsAsync();
}

private async Task GetSites(int clientId)
{
_sites = await ClientService.GetSitesByClientIdAsync(clientId);
}

public class UpdateScannerModel
{
public int SiteId { get; set; }
public string ScannerName { get; set; } = string.Empty;
...
}
}
Обновить
Список _clients заполнен правильными данными, как показано на изображении ниже.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/798 ... -value-ins
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»